书签查找混乱

Bookmark look up confusion

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

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

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

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

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

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

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

An unordered prefetch allows the inner side of the join to proceed using data from whichever I/Os happened to complete first.