Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL 2012 - Оптимизация JOIN (без хинтов)  [new]
vikkiv
Member

Откуда: London
Сообщений: 2702
SQL 2012, Есть факты на сотни миллионов строк (50 колонн), измерения в сотни тысяч строк (100 колонн)

Из фактов нужно выгрузить небольшой агрегированный набор (миллион строк) за допустим одну неделю или месяц из десятка лет.

1) Что теоретически будет быстрее на больших наборах? (inner) JOIN-ить уже агрегированные подзапросы (с только нужными колоннами) или напрямую сами таблицы и потом агрегировать на нужную гранулярность если из этих всех таблиц нужно всего лишь несколько колонн? (join-ы только по integer)

2) будет-ли быстрее делать через "with cte.." вместо subquery (или напрямую из таблиц) до нужной гранулярности с минимумом необходимых полей .. и только потом join-ить всё в необходимый resultset.

предположим что join-ноги не индексированы

вопрос чисто по оптимальному join как оно есть, а не реорганизацию источника (индексации и пр.)

пожалуйста без вариантов проверить самому (прав на чистку кэша нет, как и многих других)

Спсб.
12 май 18, 23:47    [21405877]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 - Оптимизация JOIN (без хинтов)  [new]
aleks222
Member

Откуда:
Сообщений: 952
1. Агрегация одной таблицы быстрее агрегации соединения. Но соединение неиндексированных результатов агрегации медленнее, чем соединение индексированных таблиц. Все зависит от количества строк результатов агрегации.
2. "With - без With" - безразлично. Это только способ записи запроса. Дефиниции With оптимизатор незатейливо подставляет в запрос "в месте ссылки". Но сгородить с With корявый запрос - проще. Хотя, ... некорявый тоже проще.
13 май 18, 12:42    [21406197]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 - Оптимизация JOIN (без хинтов)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7752
vikkiv,

быстрее будет то, что меньше по объёму.
13 май 18, 15:31    [21406361]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 - Оптимизация JOIN (без хинтов)  [new]
vikkiv
Member

Откуда: London
Сообщений: 2702
aleks222 / Владислав Колосов

спасибо за подтверждение, в общем виде предполагал на 60% что так и есть, ситуация осложняется тем что там источником MPP (APS/PDW), буду предварительно агрегировать через подзапросы т.к это по идее дополнительно лучше из-за того что наверное меньше данных будет перемещется на control node, т.е. одним методом сразу двойная оптимизация.
13 май 18, 15:56    [21406383]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить