Помогите разобраться с запросом

SQLBIAndI
Дата: 04.02.2013 18:35:45
Гость333,

это без индекса 2013
SQLBIAndI
Дата: 04.02.2013 18:36:19
Гость333, это без индекса 2012
SQLBIAndI
Дата: 04.02.2013 18:49:23
Гость333, это с индексом. Я, видимо в прошлый раз неправильно создала индекс, поскольку в этот раз индекс ускорил работу, но все равно 2013 год работает медленнее 2012, правда уже не в разы (12 сек 2012 год (140 тыс. данных) против 98 сек 2013 год (160 тыс.)).
Гость333
Дата: 04.02.2013 19:02:00
SQLBIAndI,

А говорите, планы выполнения не отличаются. Без индексов для 2012 года у вас был hash join, а для 2013 года — совершенно корявый loop join.

Если коротко, то допишите к вашему запросу option(hash join). Должно полегчать.
Гость333
Дата: 04.02.2013 19:07:58
SQLBIAndI
все равно 2013 год работает медленнее 2012, правда уже не в разы (12 сек 2012 год (140 тыс. данных) против 98 сек 2013 год (160 тыс.)).

В плане запроса 2013.sqlplan у вас возвращается 32 строки. У вас там стоит условие "year = 2013 and month = 3". А в плане запроса 2013_index.sqlplan это условие чудесным образом меняется на "year = 2013 and month = 1". Подставьте в запрос с индексом month = 3, наверняка также будет тормозить без option(hash join).
SQLBIAndI
Дата: 04.02.2013 19:29:28
Гость333, а что значит option(hash join)?
SQLBIAndI
Дата: 04.02.2013 19:34:07
Гость333, без индекса за третий месяц, потому что за первый не дождаться.
Добрый Э - Эх
Дата: 04.02.2013 19:41:33
SQLBIAndI
Гость333, а что значит option(hash join)?
хинт (подсказка) оптимизатору, что для соединения таблиц использовать метод HASH JOIN, а не Nested Loops или Merge Join

З.Ы.
И даже не спрашивай, что такое методы соединения nested loop, merge join, hash join. На ночь глядя такое рассказывать не буду ;)
Ennor Tiegael
Дата: 04.02.2013 21:10:28
SQLBIAndI,

Судя по планам в RAR-архиве, у вас устарела статистика. Для 2012 ожидаемое количество строк близко к фактическому (177195 против 161858, соответственно), а вот для 2013 разница составляет 12 раз - 13609 при факте 161858. Давно
sp_updatestats
вызывали?
Ennor Tiegael
Дата: 04.02.2013 21:12:56
SQLBIAndI,

И никаких хинтов, пока не убедитесь, что статистика обновлена, а индексы дефрагментированы и, главное, те что надо.