7.3. 查询计划相关操作符
98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。
图 7.3-98查询计划操作符Table Scan示例
99)Table Spool:该操作符对其输入进行扫描,并将每个数据行的拷贝放于一个隐藏的假脱机表中,该假脱机表存储于临时数据库且其仅存在于该查询的生命周期。如果该操作符被重绕(例如:通过一个Nested Loops操作符)但无需重新绑定,假脱机数据被使用而非重新扫描其输入。该操作符为物理操作符。该操作符具体如图7.3-99中节点4所示。
图 7.3-99查询计划操作符Table Spool示例
100)Table Update:该操作符对查询计划参数列确定的表中的输入数据行进行更改。其参数列中SET:()谓词决定每个被更改字段所被赋予的值。这些值也许被该操作符的SET子句或该操作符的其他地方或该查询的其他地方参考。该操作符为物理操作符。该操作符具体如图7.3-100中节点1所示。
图 7.3-100查询计划操作符Table Update示例
101)Table-valued Function:该操作符评估一个表值函数(T-SQL或CLR),并将结果数据行存储于临时数据库中。当父操作符请求这些数据行时,该操作符从临时数据库中返回这些数据行。
调用表值函数的查询产生带有该操作符的查询计划。该操作符能被以不同参数值进行评估:
- Table-valued Function XML Reader 输入一个XML BLOB作为参数并产生一个表示按XML文档顺序的XML节点的数据行集。其他输入参数也许会将XML节点限定返回到XML文档的某个子集。
- Table Valued Function XML Reader with XPath filter是一个特殊类型的XML Reader表值函数,其将输出限定到满足某个XPath表达式的XML节点。
该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-101所示。
图 7.3-101查询计划操作符Table-valued Function示例
102)Top:该操作符扫描其输入,只返回最前面确定数目或确定百分比的数据行,期间,可能会基于某个排序顺序。其参数列可能包含一系列正被用于关系检查的字段。在更改相关的查询计划中,该操作符用于强制行数限定。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-102所示。
图 7.3-102查询计划操作符Top示例
103)Top N Sort:该操作符与Sort操作符类似,除了该操作符只需要前N行数据,而非整个结果集。当N值较小时,SQL Server查询执行器试图在内存中执行整个排序操作。当N值很大时,查询执行器将诉诸于更多没有参数N时的通用排序方法。该操作符具体如图7.3-103所示。
图 7.3-103查询计划操作符Top N Sort示例
104)UDX:该操作符(扩展操作符,Extended Operators(UDX))实现SQL Server中众多XQuery及XPath操作中的某个操作。所有该类操作符都是逻辑操作符和物理操作符。
- Extended operator (UDX) FOR XML操作符用于将其输入到单个输出数据行的单个BLOB字段的XML表示中的关系数据行集串行化。该操作符为顺序敏感的XML聚合操作符。
- Extended operator (UDX) XML SERIALIZER操作符按照XML文档顺序输入表示XML节点或XQuery标量的数据行,并在单个输出行的单个XML字段中产生一个串行XML BLOB。该操作符为一个顺序敏感的XML聚合操作符。
- Extended operator (UDX) XML FRAGMENT SERIALIZER操作符为一个特殊类型的XML SERIALIZER ,其被用于处理表示XQuery插入数据修改扩展中正被插入的表示XML片段的输入数据行。
- Extended operator (UDX) XQUERY STRING操作符用于评估表示XML节点的输入数据行的XQuery字符串值。其输出带有一些字段的数据行,这些字段表示包含其输入字符串值的XQuery标量。该操作符为顺序敏感的字符串聚合操作符。
- Extended operator(UDX) XQUERY LIST DECOMPOSER操作符为一个XQuery列表分解操作符。对每个表示XML节点的输入数据行,该操作符将产生一个或多个数据行,如果其输入为XSD列表类型,则这些数据行表示包含一列元素值的XQuery标量。
- Extended operator (UDX) XQUERY DATA操作符对表示XML节点的其输入上的XQuery fn:data()函数进行评估。其输出带有一些字段的一个数据行,这些字段表示包含fn:data()结果的XQuery标量。其为一个顺序敏感的字符串聚合操作符。
- Extended operator XQUERY CONTAINS操作符对表示XML节点的输入上的XQuery fn:contains()函数进行评估。其输出带有一些字段的一个数据行,这些字段表示包含fn:contains()结果的XQuery标量。其为顺序敏感的字符串聚合操作符。
- Extended operator UPDATE XML NODE操作符对XML类型上modify()方法中XQuery替换数据修改扩展中的XML节点进行修改。
105)Union:该操作符对其多个输入进行扫描,输出被扫描的每行数据并对其去重。该操作符为逻辑操作符。该操作符具体如图7.3-105中节点2所示。
图 7.3-105查询计划操作符Union示例
106)Update:该操作符对查询计划参数列确定对象中其输入的每个数据行进行更改。该操作符为逻辑操作符。其物理操作符为Table Update,Index Update或Clustered Index Update。该操作符具体如图7.3-106中节点1所示。
图 7.3-106查询计划操作符Update示例
107)While:该操作符实现T-SQL中的while loop。该操作符为一个语言元素。该操作符具体如图7.3-107所示。
图 7.3-107查询计划操作符While示例
108)Window Spool:该操作符将一行数据展开为代表与其相关窗口的数据集合。一个查询中,OVER子句定义查询结果集中的窗口,一个窗口函数为窗口中的每行数据计算一个值。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-108中节点3所示。
图 7.3-108查询计划操作符Window Spool示例