Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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:19 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
Вопрос решился, сервак лежал просто...)) За 15 минут выгрузил, но может есть все же варианты ускорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:22 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
План запроса покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:23 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
assmsk, а в A такой же индекс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:25 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
TaPaKassmsk, а в A такой же индекс? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:26 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
assmsk, ну тут план кончено... а так должно было merge поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:27 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:32 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
assmsk, а не кртинкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:33 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
assmskTaPaKassmsk, а в A такой же индекс? ДаСудя по плану, таки нет. Если на таблицах кластерные индексы с одинаковым первым столбцом dd_int, то, по крайней мере в теории, ускорить можно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 16:38 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
там ещё и скаляр какой-то, из за него hash я так понимаю, так что не всё там однозначно с описанием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 16:44 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
invm, а почему ты решил, что 500000 записей из А не охватывают все записи из B ? где автор сказал, что связь "один-к-одному"? там, скорее всего, "один-ко-многим" по принципу мастер-детэйл. никаких дополнительный условий фильтрации данных из таблицы А нет, поэтому условием по мин-макс ты никак не ограничишь объем данных, возвращаемых из таблицы B - всё одно, потянется весь её объем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 18:34 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эха почему ты решил, что 500000 записей из А не охватывают все записи из B ? где автор сказал, что связь "один-к-одному"? там, скорее всего, "один-ко-многим" по принципу мастер-детэйлПотому что если охватывают и это действительно мастер-детейл, то в запросе ТС таблица А не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 18:47 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
При такой селективности там по-любому будет просмотр и хэш. Копите деньги на ядра и память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 11:50 |
|
||
|
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, 14:37 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
assmsk, Доработать схему так, чтобы никаких текстовых полей в соединенях не участвовало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 16:13 |
|
||
|
Join маленькой таблицы с огромной
|
|||
|---|---|---|---|
|
#18+
Случайное выполнение просто селекта к таблице из 1,5 млрд на серваке с 48 ядрами (HT) и 200Гб озу (фикс для СУБД) сделало его недоступным для подключений на 5 минут ((( "а кто то сделал?" (С) А вы хотите чтобы 3 млрд, да еще соединение, к тому же хэшматч, не еще не факт что строк останется 3 мдрд (вы про это не писали) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 20:13 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39594099&tid=1690356]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 389ms |

| 0 / 0 |
