我有一个表User,它有一堆索引,其中一个是AccountIdentifier列的唯一索引。
既然这是一个唯一索引,为什么除了索引查找还需要一个键查找?索引查找工具提示报告只返回了一条记录。我也尝试过将索引转换为“唯一键”类型。
alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png
我有一个表User,它有一堆索引,其中一个是AccountIdentifier列的唯一索引。
既然这是一个唯一索引,为什么除了索引查找还需要一个键查找?索引查找工具提示报告只返回了一条记录。我也尝试过将索引转换为“唯一键”类型。
alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png
3条答案
按热度按时间xxls0lw81#
因为它选择的是
*
。它使用非聚集索引来定位行,但随后需要获取要返回的数据。
要避免bookmark lookup,您需要将非聚集索引设置为覆盖索引(理想情况下,通过减少选择列表中的列数,但也可以通过向索引本身添加新列或将其设置为included columns)
如果您在数据表上有丛集索引,则非丛集索引中的数据列定位器会包含丛集索引键,因此它不需要书签查阅,就能满足仅在
AccountIdentifier
和丛集索引数据行上的查询。x8diyxa72#
键查找不是“查找键”,而是“根据键查找行”。
hgc7kmma3#
有关键查找/书签查找的更多背景信息,请参阅以下文章和博客文章: