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

SQLBIAndI
Дата: 04.02.2013 17:43:44
Есть запрос:
select * from datT1 left join datT2 on
datT2.Field_NRec = datT1.cField
WHERE YEAR(datT1.[Дата]) = 2013 AND MONTH(datT1.[Дата]) = 1

за 2012 год работает 49 сек,
за 2013 год работает часы,
есть поставить условие WHERE (YEAR(datT1.[Дата]) = 2012 OR YEAR(datT1.[Дата]) = 2013) AND MONTH(datT1.[Дата]) = 1, то работает 80 сек.

Если убрать left join, то запрос отрабатывает в любой интервал времени быстро.
Помогите разобраться, что нужно сделать, чтобы запрос работал за 2013 год быстро.
aleks2
Дата: 04.02.2013 17:47:49
WHERE '20130101'<=datT1.[Дата] AND datT1.[Дата] < '20130201'
SQLBIAndI
Дата: 04.02.2013 17:53:46
aleks2, к сожалению не помогает
Remind
Дата: 04.02.2013 17:54:16
Индекс по дате есть?
SQLBIAndI
Дата: 04.02.2013 18:01:16
Remind,
раньше индекса не было, работало всегда быстро.
В базу загрузились данные за 2010-2011 год и дополнялись с конца 2011 года. С 2013 начались проблемы быстродействия.
Пробовала добавить:
CREATE NONCLUSTERED INDEX [IX_Дата] ON [dbo].[datT1]
(
[Дата] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

На скорость этого запроса индекс не повлиял.
Добрый Э - Эх
Дата: 04.02.2013 18:02:55
SQLBIAndI,

а по плану видно, что при выполнении запроса вновь созданный индекс подхватился ?
Гость333
Дата: 04.02.2013 18:03:16
SQLBIAndI
Помогите разобраться, что нужно сделать, чтобы запрос работал за 2013 год быстро.

Сначала нужно сравнить планы запросов и понять, чем они отличаются.
SQLBIAndI
Дата: 04.02.2013 18:04:01
Гость333, ничем
Добрый Э - Эх
Дата: 04.02.2013 18:05:07
SQLBIAndI
Гость333, ничем
стало быть - индекс идет боком и в запросе не используется.
Гость333
Дата: 04.02.2013 18:11:23
SQLBIAndI
Гость333, ничем

Я пытался намекнуть, чтобы вы показали тут планы запросов. Теперь говорю прямым текстом: покажите планы :)