【问题标题】:Bookmark look up confusion书签查找混乱
【发布时间】:2015-04-11 21:49:12
【问题描述】:

新版本的 SQL Management Studio 会呈现如下图所示的书签查找。这让我认为该操作独立于 Index Seek(并且可以并行运行?)。 Index Seek 不应该先完成吗?它的输出(物理行 ID)是 Key Lookup 的输入,对吧?

【问题讨论】:

  • 但是考虑一下Nested Loops 做了什么——它为第一个产生的每个结果执行第二个运算符——所以只要 one 结果从索引搜索中可用,该结果的键查找可以与继续搜索并行发生。
  • 有道理!谢谢!您可以将其发布为答案吗?

标签: sql-server performance sql-server-2008 indexing sql-execution-plan


【解决方案1】:

您问题中的计划显示了密钥查找。这种类型的查找使用逻辑标识符(聚集索引键),而不是您问题中所述的物理标识符。

该操作不独立于索引查找,因为索引查找返回在键查找中查找的逻辑键值。

屏幕截图中显示的执行计划是串行的而不是并行的。它在单个线程上运行,因此在第一个线程执行索引查找时,另一个线程不会忙于进行键查找。

可以通过键查找获得并行计划

但是,这会将行划分为不同的线程,并且每个线程在其自己的行集上有效地作为串行计划运行,因此特定行集的迭代器仍然不会并行独立地运行。

对于串行或并行计划,嵌套循环运算符可以使用prefetch。这会为嵌套循环连接的内侧(在本例中通过键查找)需要的页面发出异步 I/O

无序预取允许连接的内侧继续进行 使用最先完成的 I/O 中的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多