SQL Server查询计划操作符(7.3)——查询计划相关操作符(10)
7.3. 查询计划相关操作符
88)Sequence Project:该操作符通过对一个排序集合增加字段来进行计算。其基于一个或多个字段的值将其输入的数据行分成多个段,这样,该操作符每次输出一个段,这些字段显示为该操作符的参数。该操作符为逻辑操作符或物理操作符。
89)Snapshot:该操作符创建一个看不到其他操作所做改变的游标。
90)Sort:该操作符对所有的输入数据行进行排序。如果该操作去重,其参数列包含一个DISTINCT ORDER BY:()谓词,或其参数列包含一个带有一系列逗号分隔、用于排序的字段的ORDER BY:()谓词。如果这些字段按升序排序,其将被冠以“ASC”值,或如果这些字段按降序排序,其将被冠以“DESC”值。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-90中节点2所示。
图 7.3-90查询计划操作符Sort示例
91)Split:该操作符用于优化更改处理。其将每个更改操作劈成一个删除和一个插入操作。该操作符为逻辑操作符和物理操作符。
92)Spool:该操作符将某个中间查询结果保存于临时数据库中。该操作符具体如图7.3-92所示。
图 7.3-92查询计划操作符Spool示例
93)Stream Aggregate:该操作符按照一个或多个字段对数据行进行分组,接着,计算该查询返回的一个或多个聚合表达式。该操作符的输出将可能被该查询中后续的操作符参考,返回客户端,或二者兼而有之。该操作符要求输入按照其分组字段进行排序。如果因为先前的Sort操作符,或因为有序索引查找或扫描等原因,而导致数据行未被排序,优化器将在该操作符前使用一个Sort操作符。语句“SHOWPLAN_ALL”的输出或SSMS产生的图形查询计划中,GROUOP BY谓词中的字段将在其参数列中被列出,而聚合表达式将在其定义值(Defined Values)列中被列出。该操作符为物理操作符。该操作符具体如图7.3-93节点2所示。
图 7.3-93查询计划操作符Stream Aggregate示例
94)Switch:该操作符为一种具有n个输入的特殊类型的串接迭代器。该操作符都有一个表达式与其相关联。根据该表达式的返回值(0至n-1之间),该操作符将相应的输入流拷贝至相应的输出流。该操作符的用处之一,就是实现涉及与类似TOP的某些操作符相关的快速向前游标的查询计划。该操作符为逻辑操作符和物理操作符。
95)Table Delete:该操作符从查询计划参数列确定的表中删除数据行。该操作符为物理操作符。该操作符具体如图7.3-95节点1所示。
图 7.3-95查询计划操作符Table Delete示例
96)Table Insert:该操作符将其输入数据行插入查询计划参数列确定的表中。其参数列也包含一个SET:()谓词,其指示每个字段被赋予的值。如果该操作符没有子节点提供插入值,那么,被插入的数据行来源于该操作符本身。该操作符为物理操作符。该操作符具体如图7.3-96节点1所示。
图 7.3-96查询计划操作符Table Insert示例
97)Table Merge:该操作符对一个堆应用一个合并数据流(Merge Data Stream)。该操作符删除、更改或插入其参数列确定表中的数据行。实际执行的操作取决于其参数列确定的ACTION列的运行时值。该操作符为物理操作符。