表格结构:
AID INT (primary key)
AName varchar(50)
B表结构:
BID INT (primary key)
AID INT
BeginTime dateTime
EndTime datetime
B表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
我认为应该是Index Seek,但为什么不呢?如何实现?提前感谢!
答案 0 :(得分:4)
您的搜索条件正在使用BeginTime和EndTime,您需要在这些列上使用非聚集索引来实现搜索:
CREATE NONCLUSTERED INDEX IX_1 ON B
(
BeginTime
)
INCLUDE
(
EndTime,
AID
)
INCLUDE部分用于覆盖 - 它允许SQL Server满足来自此非聚集索引的查询,而无需返回表中以获取其他列。