我有一个表有一堆索引的用户。其中一个是AccountIdentifier列的唯一索引。
由于这是一个唯一索引,为什么除索引查找外还需要键查找?索引查找工具提示报告只返回一条记录。我也尝试将索引转换为“唯一键”类型。
alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png
答案 0 :(得分:17)
因为它正在选择*
。
它使用非聚集索引来定位行,然后需要去获取要返回的数据。
要避免bookmark lookup,您需要将非聚集索引作为覆盖索引(理想情况下,通过减少选择列表中的列数,但也可以通过向索引本身添加新列或{{} 3}})
如果表上有聚簇索引,则非聚簇索引中的行定位器将包含聚簇索引键,因此不需要书签查找来仅满足AccountIdentifier
和聚簇索引列上的查询
答案 1 :(得分:13)
键查找并不意味着“查找键”,而是“根据键查找行”。
答案 2 :(得分:7)
有关密钥查找/书签查找的更多背景信息,请参阅这些文章和博客文章: