В следующем запросе используется поиск по индексу в столбце LastModifiedTime.
SELECT
CONVERT(varchar, a.ReadTime, 101) as ReadDate,
a.SubID,
a.PlantID,
a.Unit as UnitID,
a.SubAssembly
FROM dbo.Accepts a WITH (NOLOCK)
WHERE a.LastModifiedTime BETWEEN '3/3/2010' And '3/4/2010'
AND a.SubAssembly = '400'
В приведенном ниже запросе, который почти идентичен вышеуказанному запросу, вместо индекса на LastModifiedTime используется сканирование кластерного индекса. Кто-нибудь может сказать мне, почему? И, что более важно, что я могу сделать, чтобы SQL Server использовал индекс для столбца LastModifiedTime, без , используя подсказку индекса.
Declare @LastModifiedTimeEnd dateTime
Declare @LastModifiedTimeStart dateTime
SELECT
CONVERT(varchar, a.ReadTime, 101) as ReadDate,
a.SubID,
a.PlantID,
a.Unit as UnitID,
a.SubAssembly
FROM dbo.Accepts a WITH (NOLOCK)
WHERE a.LastModifiedTime BETWEEN @LastModifiedTimeStart And @LastModifiedTimeEnd
AND a.SubAssembly = '400'