Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Индекс для поля DateTime и предикат >=  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
Всем привет,
Есть в таблице поле OrderCreated типа DateTime.
Есть запрос по этому полю, который долго выполняется. Смотрю в плане, проблема в Clustered Index Scan с предикатом
OrderCreated >= @Date1 and OrderCreated < @Date2

Построил индекс по этому полю, но он не используется. По-прежнему идет Clustered Index Scan.
Вопрос. Если идет поиск по диапазону дат, индекс на поле с датой никак не может быть задействован?
Можно ли что-то сделать в данном случае, чтобы ускорить запрос?

PS: тип Date для данного поля не приемлим.
5 июл 12, 11:11    [12820715]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
В выборке только OrderCreated или ещё какие столбцы?
5 июл 12, 11:13    [12820722]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Kudep,

И какой процент записей подпадает под условие?
5 июл 12, 11:23    [12820774]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
Упс, сори, тупанул, index scan делался, потому что не все запрашиваемые поля были включены в индекс.
5 июл 12, 14:00    [12822100]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Kudep
Упс, сори, тупанул, index scan делался, потому что не все запрашиваемые поля были включены в индекс.
Какие поля?
На каком месте в индексе находится OrderCreated?
5 июл 12, 14:05    [12822148]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
iap
Kudep
Упс, сори, тупанул, index scan делался, потому что не все запрашиваемые поля были включены в индекс.
Какие поля?
На каком месте в индексе находится OrderCreated?

Индекс:
CREATE NONCLUSTERED INDEX [IX_myindexname] ON MyTable 
(
	OrderCreated ASC
)
INCLUDE ( field1, field2, field3) 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 [FG_Data_01]
GO

Запрос:
select field4 from MyTable where OrderCreated....
5 июл 12, 15:19    [12822858]     Ответить | Цитировать Сообщить модератору
 Re: Индекс для поля DateTime и предикат >=  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
field4 Добавь в индекс,
ну и селективность никто не отменял...
5 июл 12, 15:23    [12822891]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить