【发布时间】:2010-11-12 18:37:33
【问题描述】:
SQL 2000
NED 表有一个外键到 SIGN 表 NED.RowID 到 SIGN.RowID
SIGN 表有一个外键到 NED 表 SIGN.SignID 到 NED.SignID
RowID 和 SignID 是集群主键,它们是 GUID(不是我的选择)
WHERE 子句是:
FROM
[SIGN] A
INNER JOIN NED N ON A.SIGNID = N.SIGNID
INNER JOIN Wizard S ON A.WizardID = S.WizardID
INNER JOIN [Level] SL ON N.LevelID = SL.LevelID
LEFT JOIN Driver DSL ON SL.LevelID = DSL.LevelID
AND DSL.fsDeptID = @fsDeptID
INNER JOIN [Character] ET ON S.CharacterID = ET.CharacterID
INNER JOIN Town DS ON A.TownID = DS.TownID
WHERE
(A.DeptID = @DeptID OR
S.DeptID = @DeptID
AND
A.[EndTime] > @StartDateTime AND A.[StartTime] < @EndDateTime
AND
A.NEDStatusID = 2
为什么这个查询的 SIGN 表上有一个 INDEX SCAN?什么会导致对聚集索引进行索引扫描?谢谢
【问题讨论】:
-
我要问一下您对这个查询的期望,或者更确切地说,为什么您认为索引扫描在这种情况下是一个问题?
-
您是否来自其他 DBMS 并希望看到类似散列连接或集群连接的内容?如果是,那么您应该知道在 SQL Server 中,聚集索引只是一个树索引,其中叶节点是数据页。如果您已经知道这一点,请忽略此评论。
标签: sql sql-server clustered-index