
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.01.2018, 15:19:34
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
Добрый день! Запрос умирает, пробовал через join, apply все тщетно. Таблица А: (name_ varchar(50), dd_int int) около 500 000 записей. Таблица В: (name_ varchar(50), dd_int int, amount numeric(20,2) ) Чуть меньше 3 миллиардов В таблице В индекс: CREATE CLUSTERED INDEX [ix_indexes_dd_name] ON B ( [dd_int ] ASC, [name_ ] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA1] GO Вот вообщем к таблице А подтянуть поле amount из таблицы В просто беда. Часами висит запрос и ничего. SELECT A.name_,A.dd_int, B.amount FROM A A INNER JOIN B B ON A.name_ = B.name_ and A.dd_int = B.dd_int Какие есть варианты? пс - как то изменить индексы в "В" возможности нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:22:16
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
Вопрос решился, сервак лежал просто...)) За 15 минут выгрузил, но может есть все же варианты ускорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:23:53
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
План запроса покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:25:52
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
assmsk, а в A такой же индекс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:26:27
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
TaPaKassmsk, а в A такой же индекс? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:27:41
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
assmsk, ну тут план кончено... а так должно было merge поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:32:55
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 15:33:55
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
assmsk, а не кртинкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 16:38:23
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
assmskTaPaKassmsk, а в A такой же индекс? ДаСудя по плану, таки нет. Если на таблицах кластерные индексы с одинаковым первым столбцом dd_int, то, по крайней мере в теории, ускорить можно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 16:44:17
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
там ещё и скаляр какой-то, из за него hash я так понимаю, так что не всё там однозначно с описанием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 18:34:09
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
invm, а почему ты решил, что 500000 записей из А не охватывают все записи из B ? где автор сказал, что связь "один-к-одному"? там, скорее всего, "один-ко-многим" по принципу мастер-детэйл. никаких дополнительный условий фильтрации данных из таблицы А нет, поэтому условием по мин-макс ты никак не ограничишь объем данных, возвращаемых из таблицы B - всё одно, потянется весь её объем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2018, 18:47:54
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
Добрый Э - Эха почему ты решил, что 500000 записей из А не охватывают все записи из B ? где автор сказал, что связь "один-к-одному"? там, скорее всего, "один-ко-многим" по принципу мастер-детэйлПотому что если охватывают и это действительно мастер-детейл, то в запросе ТС таблица А не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.02.2018, 11:50:42
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
При такой селективности там по-любому будет просмотр и хэш. Копите деньги на ядра и память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.02.2018, 14:37:52
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
assmskДобрый день! Запрос умирает, пробовал через join, apply все тщетно. Таблица А: (name_ varchar(50), dd_int int) около 500 000 записей. Таблица В: (name_ varchar(50), dd_int int, amount numeric(20,2) ) Чуть меньше 3 миллиардов В таблице В индекс: CREATE CLUSTERED INDEX [ix_indexes_dd_name] ON B ( [dd_int ] ASC, [name_ ] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA1] GO Вот вообщем к таблице А подтянуть поле amount из таблицы В просто беда. Часами висит запрос и ничего. SELECT A.name_,A.dd_int, B.amount FROM A A INNER JOIN B B ON A.name_ = B.name_ and A.dd_int = B.dd_int Какие есть варианты? пс - как то изменить индексы в "В" возможности нет. Ну вроде очевидно не? create index ix1 on A (dd_int) include (name_) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.02.2018, 16:13:53
|
|||
|---|---|---|---|
Join маленькой таблицы с огромной |
|||
|
#18+
assmsk, Доработать схему так, чтобы никаких текстовых полей в соединенях не участвовало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.02.2018, 20:13:30
|
|||
|---|---|---|---|
|
|||
Join маленькой таблицы с огромной |
|||
|
#18+
Случайное выполнение просто селекта к таблице из 1,5 млрд на серваке с 48 ядрами (HT) и 200Гб озу (фикс для СУБД) сделало его недоступным для подключений на 5 минут ((( "а кто то сделал?" (С) А вы хотите чтобы 3 млрд, да еще соединение, к тому же хэшматч, не еще не факт что строк останется 3 мдрд (вы про это не писали) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1690356]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
214ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 547ms |

| 0 / 0 |
