代码之家  ›  专栏  ›  技术社区  ›  BC.

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

  •  15
  • BC.  · 技术社区  · 14 年前

    我有一个拥有大量索引的表用户。其中之一是accountIdentifier列上的唯一索引。

    由于这是一个唯一的索引,为什么除了索引查找之外还需要一个键查找?索引查找工具提示报告只返回一条记录。我还尝试将索引转换为“唯一键”类型。

    alt text http://s3.amazonaws.com/brandonc.baconfile.com/pitchurs/tmp/capture_2.png

    3 回复  |  直到 8 年前
        1
  •  17
  •   Matt John Wright    8 年前

    因为它正在选择 * .

    它使用非聚集索引来定位行,但随后需要去获取要返回的数据。

    避免 bookmark lookup 您将需要使非聚集索引成为覆盖索引(理想情况下,通过减少选择列表中的列数,但也可以将新列添加到索引本身或作为 included columns )

    如果表中有聚集索引,则非聚集索引中的行定位器将包含聚集索引键,因此它不需要书签查找来满足对 AccountIdentifier 和聚集索引列。

        2
  •  13
  •   erikkallen    14 年前

    键查找并不意味着“查找键”,而是“基于键查找行”。

        3
  •  7
  •   marc_s    14 年前