SQL Server:没有聚簇索引的关键查找

时间:2018-01-18 18:38:17

标签: sql-server database indexing clustered-index non-clustered-index

我有一个名为Scan的表格,其中只有两列:id (int)a (char)

它没有任何索引。所以我在

之后创建了一个非聚集索引链接
CREATE INDEX ix_id ON scan(id ASC)

所以我跑了这个选择:

SELECT id, a
FROM Scan
WHERE id = 1

这是执行计划:

enter image description here

如果我的表没有任何聚集索引,为什么我会获得一个Key Lookup(聚簇)?

2 个答案:

答案 0 :(得分:2)

  

如果我的桌子没有,我为什么会得到一个Key Lookup(群集)   聚集索引?

你没有。这可能是SQL Operations Studio使用的html-query-plan库中的错误。

粘贴计划网站(example)上也会显示相同的问题。

如您所知(因为您找到了它!)错误报告is here

答案 1 :(得分:1)

非聚集索引的叶节点仅包含键列,因此选择除键列之外的任何内容(在您的情况下为a),然后需要执行Rid /键查找以提取数据来自堆/聚集索引

使用覆盖索引来避免密钥查找

CREATE INDEX ix_id ON scan(id ASC) include (a)

通过这种方式,列a也将与键列一起存储在索引中,因此将避免键查找