【发布时间】:2018-06-27 22:20:24
【问题描述】:
我有一个名为 Scan 的表,它只有两列:id (int) 和 a (char)。
它开始时没有任何索引。所以我在下面创建了一个非聚集索引链接
CREATE INDEX ix_id ON scan(id ASC)
所以我运行了这个选择:
SELECT id, a
FROM Scan
WHERE id = 1
这是执行计划:
如果我的表没有任何聚集索引,为什么我会得到键查找(聚集)?
【问题讨论】:
-
id是否在您的表中标记为主键?如果是这样,SQL Server 自动在该列上创建了一个聚集索引 - 这是记录的默认行为。 -
除非您有聚集索引,否则无法在聚集索引上进行键查找。所以要么你有一个 CI,要么可能是任何应用程序中的一个错误,它向你展示了这个计划。这些不是 SSMS 图标。
-
@marc_s,我没有任何主键。我创建了测试数据库,然后只是一个没有键或约束的简单表。然后我手动添加了snon-clustered index。
-
当时可能 SQL Operations Studio 显示的图标有误。
-
找到了这个github.com/Microsoft/sqlopsstudio/issues/391,这是一个来自 sql Operations Studio 的问题,说正在呈现密钥查找而不是 RID 查找。他们关闭了它,但我有最新版本,问题仍然存在。但你是对的,是一个错误
标签: sql-server database indexing clustered-index non-clustered-index