Вот мой запрос
Declare @StartDateTime datetime, @EndDateTime datetime
Select @StartDateTime = '2010-11-15', @EndDateTime = '2010-11-16'
Select PracticeCode, AccountNo, ProcCd, Modifier , ChargeDos, Paid as Amt, CreatedDate,
case When Paid > 0 then 'P'
When Paid = 0 and WrittenOff = DueAmt then 'A'
Else 'O'
End as Status
From Trn_Postings
Where CreatedDate >= @StartDateTime and CreatedDate <= @EndDateTime
--and ManualOverride in ('S','F','X','G','O')
and ManualOverride in ('N','U')
Редактировать: Дата создания - это столбец даты и времени, который содержит дату и время создания записи
У меня есть отдельные индексы как для CreatedDate, так и для ManualOverride. Но план выполнения показывает сканирование кластерного индекса. Таблица имеет почти миллионную запись и может увеличиться в 4-5 раз в ближайшем будущем.
Самым удивительным является то, что если я изменю предложение where, как показано ниже, оно использует оба индекса. Я просто не знаю почему.
Where CreatedDate >= @StartDateTime and CreatedDate <= @EndDateTime
and ManualOverride in ('S','F','X','G','O')
--and ManualOverride in ('N','U')
Как мне заставить Sql использовать индексы ...
Далее, если я использую Не в предложении, индекс не будет использоваться.