SQL Server 为什么此sql查询执行键查找?

6gpjuf90  于 2022-11-28  发布在  其他
关注(0)|答案(3)|浏览(156)

我有一个表User,它有一堆索引,其中一个是AccountIdentifier列的唯一索引。
既然这是一个唯一索引,为什么除了索引查找还需要一个键查找?索引查找工具提示报告只返回了一条记录。我也尝试过将索引转换为“唯一键”类型。
alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png

xxls0lw8

xxls0lw81#

因为它选择的是*
它使用非聚集索引来定位行,但随后需要获取要返回的数据。
要避免bookmark lookup,您需要将非聚集索引设置为覆盖索引(理想情况下,通过减少选择列表中的列数,但也可以通过向索引本身添加新列或将其设置为included columns
如果您在数据表上有丛集索引,则非丛集索引中的数据列定位器会包含丛集索引键,因此它不需要书签查阅,就能满足仅在AccountIdentifier和丛集索引数据行上的查询。

x8diyxa7

x8diyxa72#

键查找不是“查找键”,而是“根据键查找行”。

hgc7kmma

hgc7kmma3#

有关键查找/书签查找的更多背景信息,请参阅以下文章和博客文章:

相关问题