1

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

Execution plan sample

+2

但是考虑一下'Nested Loops'做了什么 - 它为第一个结果产生的每个结果执行第二个运算符 - 所以只要索引seek中有一个*结果可用,那么结果的键查找可以在继续寻找的同时发生。 – 2015-02-11 14:36:56

+0

这很有道理!谢谢!你可以发布这个答案吗? – UserControl 2015-02-11 18:59:32

回答

1

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

该操作并非独立于索引查找,因为索引seek返回在密钥查找中查找的逻辑键值。

截图中显示的执行计划是串行不平行的。它运行在单个线程上,所以在第一个线程正在执行索引查找时,并不是另一个线程忙于执行键查找。

它有可能获得与键查询并行计划

enter image description here

然而,这将行划分不同的线程,每个线程有效地串行计划所以它仍然运行在它自己的一套行并不是一组特定行的迭代器将独立并行操作。

对于串行或并行计划,嵌套循环运算符可能会使用prefetch。这将发出异步I/O用于将由嵌套循环的内侧需要的页面连接(在这种情况下,由键查找)

无序预取允许的加盟内侧使用进行 来自任何I/O发生的数据首先完成。