2013-07-16 104 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来满足来自此非聚集索引的查询,而不必返回表中查找其他列。

相关问题