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 год быстро.
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
На скорость этого запроса индекс не повлиял.