SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

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示例

相关推荐
大模型最新论文速读40 分钟前
在Text-to-SQL任务中应用过程奖励模型
数据库·人工智能·sql·深度学习·语言模型·自然语言处理
Frankabcdefgh2 小时前
前端进化论·JavaScript 篇 · 数据类型
javascript·安全·面试·数据类型·操作符·初学者·原理解析
luo_guibin3 小时前
DVWA在线靶场-SQL注入部分
数据库·sql·mysql
2501_911121236 小时前
【无标题】
数据库·sql·mysql
烧瓶里的西瓜皮15 小时前
Go语言从零构建SQL数据库(9)-数据库优化器的双剑客
数据库·sql·golang
篱笆院的狗16 小时前
MySQL 中如何进行 SQL 调优?
java·sql·mysql
ABdolphin17 小时前
Spring-博客系统项目
数据库·sql·spring
闪电麦坤9520 小时前
SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
数据库·sql·mysql
大G哥21 小时前
【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充
数据库·sql
houzhizhen1 天前
SQL JOIN 关联条件和 where 条件的异同
前端·数据库·sql