我有一个名为Scan
的表格,其中只有两列:id (int)
和a (char)
。
它没有任何索引。所以我在
之后创建了一个非聚集索引链接CREATE INDEX ix_id ON scan(id ASC)
所以我跑了这个选择:
SELECT id, a
FROM Scan
WHERE id = 1
这是执行计划:
如果我的表没有任何聚集索引,为什么我会获得一个Key Lookup(聚簇)?
答案 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
也将与键列一起存储在索引中,因此将避免键查找