2013-07-16 4 views
2

Структура таблицы:Почему происходит сканирование индекса?

AID INT (primary key) 

AName varchar(50) 

В таблице Структура:

BID  INT (primary key) 
AID  INT 
BeginTime dateTime 
EndTime datetime 

Существует некластерном на колонке Б таблицы AID.

My SQL запрос ниже:

SELECT dbo.A.AID , 
     AName 
FROM dbo.A 
     INNER JOIN dbo.B ON dbo.A.AID = dbo.B.AID 
WHERE GETDATE() BETWEEN BeginTime AND EndTime + 1 

enter image description here

Я думаю, что должно быть Index Seek, Но почему бы не Как достичь Спасибо заранее?!

ответ

4

Ваше условие поиск использует BeginTime и Конечное время и вам нужен некластеризованный индекс этих столбцов для достижения искать:

CREATE NONCLUSTERED INDEX IX_1 ON B 
(
    BeginTime 
) 
INCLUDE 
(
    EndTime, 
    AID 
) 

ВКЛЮЧИТЬ часть есть для покрытия - это позволяет SQL Server, чтобы удовлетворить запрос из этого некластеризованного индекса без необходимости возвращаться к таблице для дополнительных столбцов.

Смежные вопросы