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

Bator
Дата: 04.02.2013 22:23:19
1. Индекс по дате, он видимо уже есть
2. Использовать не функции, а прямое указание диапазона, как указали выше
WHERE '20130101'<=datT1.[Дата] AND datT1.[Дата] < '20130201'

3. Возможно стоит добавить индекс по datT2.Field_NRec
SQLBIAndI
Дата: 04.02.2013 22:26:26
Ennor Tiegael,

Спасибо, завтра попробую, я и предполагала, что со статистикой может быть связано, поскольку старая, но не хватало опыта . По результатам сообщу помогло или нет.
SQLBIAndI
Дата: 04.02.2013 23:14:21
Ennor Tiegael,
не дождалась завтра. Проверила сегодня.
ПОМОГЛО!!! Спасибо большое.
Скажите, пожалуйста, а почему статистика не обновляется автоматически (у базы стоит свойство Auto Update Statistics = true)?
И как лучше сделать ее обновление: каждый день выполняется пакет IIS, который загружает данные в базу, обрабатывает их и на основании этих данных считается куб в Analysis? Как вариант, добавить в пакет IIS обновление статистики или лучше периодически вручную?
Владимир Затуливетер
Дата: 04.02.2013 23:33:20
SQLBIAndI,

В пакет добавьте, если много времени не требует обновление.
В ручную забудете.
Ennor Tiegael
Дата: 05.02.2013 03:43:19
SQLBIAndI,

До 2012 версии у сиквела крайне тупой и неэффективный алгоритм автообновления: он включается, если изменено или добавлено хотя бы 20% таблицы. На больших - действительно больших - таблицах этого можно никогда не дождаться. В 2012 начали учитывать размер, но все равно лучше руками.

Если у вас данные грузятся балком, то делать обновление на всех таблицах, участвовавших в загрузке, сразу после окончания оной. Ну и дополнительно к этому имеет смысл сделать джоб, который раз в сутки будет обновлять статистику на всей БД. Тут смотрите сами насчет периодичности, вам виднее.
SQLBIAndI
Дата: 05.02.2013 08:59:06
Ennor Tiegael,

Еще раз спасибо.
Гость333
Дата: 05.02.2013 09:35:50
Ennor Tiegael
До 2012 версии у сиквела крайне тупой и неэффективный алгоритм автообновления: он включается, если изменено или добавлено хотя бы 20% таблицы. На больших - действительно больших - таблицах этого можно никогда не дождаться. В 2012 начали учитывать размер, но все равно лучше руками.

Если точнее, то это стало доступно в SQL Server 2008R2 SP1 при включении флага 2371: http://blogs.msdn.com/b/saponsqlserver/archive/2011/09/07/changes-to-automatic-update-statistics-in-sql-server-traceflag-2371.aspx
Гость333
Дата: 05.02.2013 09:49:16
SQLBIAndI,

У вас только при помощи "пакета IIS" (может, всё-таки пакета SSIS?) данные грузятся в таблицу datT1? Если возможен ввод данных вручную, то даже с периодическим обновлением статистики периодически возможны подобные перекосы в плане запроса.

Пример: начался месяц, в собранной ночью статистике указано, что данных за этот месяц в таблице ещё нет. Кто-то ввёл десяток документов и пытается выполнить запрос. С большой вероятностью вы снова увидите план запроса "2013.sqlplan" :-)
SQLBIAndI
Дата: 05.02.2013 11:00:59
Гость333, конечно IS - Integration Services. И, кстати, 2008R2. Посмотрю флаг.