2013-07-16 100 views
2

甲表結構:爲什麼會有索引掃描?

AID INT (primary key) 

AName varchar(50) 

乙表結構:

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

上有乙表AID列非羣集。

我下面的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

我覺得應該是索引查找,但爲什麼不能如何提前實現謝謝?!

回答

4

你的搜索條件是使用的BeginTime和結束時間,你需要對這些列的非聚集索引,實現了求:

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

的包成分是有覆蓋 - 它允許SQL Server來滿足來自此非聚集索引的查詢,而不必返回表中查找其他列。

相關問題