Showplan 逻辑运算符和物理运算符参考

本文档已存档,并且将不进行维护。

 

运算符说明了 SQL Server 如何执行查询或数据操作语言 (DML) 语句。 查询优化器使用运算符生成查询计划,以创建在查询中指定的结果或执行在 DML 语句中指定的操作。 查询计划是由物理运算符组成的一个树。 您可以使用 SET SHOWPLAN 语句、 SQL Server Management Studio中的图形执行计划选项或 SQL Server Profiler Showplan 事件类来查看查询计划。

运算符分为逻辑运算符和物理运算符。

逻辑运算符 逻辑运算符描述了用于处理语句的关系代数操作。 换言之,逻辑运算符从概念上描述了需要执行哪些操作。

物理运算符 物理运算符实施由逻辑运算符描述的操作。 每个物理运算符都是一个执行某项操作的对象或例程。 例如,某些物理运算符可访问表、索引或视图中的列或行。 其他物理运算符执行其他操作,如计算、聚合、数据完整性检查或联接。 物理运算符具有与其关联的开销。

物理运算符初始化、收集数据,然后关闭。 具体来讲,物理运算符可以响应下列三种方法调用:

  • Init()Init() 方法使物理运算符初始化自身并设置所有需要的数据结构。 尽管一个物理运算符通常只接收一次 Init() 调用,但也可以接收许多次调用。

  • GetNext()GetNext() 方法使物理运算符获得数据的第一行或后续行。 物理运算符可以不接收 GetNext() 调用,也可以接收许多次调用。

  • Close()Close() 方法使物理运算符执行某些清除操作,然后关闭。 一个物理运算符只接收一个 Close() 调用。

GetNext() 方法返回一个数据行,它的调用次数作为 ActualRows 显示在使用 SET STATISTICS PROFILE ON 或 SET STATISTICS XML ON 生成的显示计划输出中。 有关这些 SET 选项的详细信息,请参阅 SET STATISTICS PROFILE (Transact-SQL) 和 SET STATISTICS XML (Transact-SQL)。

显示计划输出中显示的 ActualRebindsActualRewinds 计数是指 Init() 方法被调用的次数。 除非运算符位于循环联接的内侧,否则 ActualRebinds 等于一, ActualRewinds 等于零。 如果运算符位于循环联接的内侧,那么重新绑定次数和重绕次数之和应等于联接外侧所处理的行数。 重新绑定意味着联接的一个或多个相关参数发生更改后,必须重新计算联接的内侧。 重绕意味着任何相关参数都没有发生更改,可以重用之前的内侧结果集。

ActualRebindsActualRewinds 显示在使用 SET STATISTICS XML ON 生成的 XML 显示计划输出中。 它们仅对填充Nonclustered Index SpoolRemote Query行计数假脱机SortTable Spool,和表值函数运算符。 ActualRebindsActualRewinds可能还会填充Assert筛选器运算符时StartupExpression属性设置为 TRUE。

ActualRebindsActualRewinds 显示在 XML 显示计划中时,它们可以与 EstimateRebindsEstimateRewinds相比较。 如果它们没有显示,则预计的行数 (EstimateRows) 可以与实际的行数 (ActualRows) 相比较。 注意,如果它们没有显示,实际的图形显示计划输出中将实际的重新绑定次数和重绕次数均显示为零。

只有在显示计划输出是使用 SET STATISTICS XML ON 生成的情况下,相关计数器 ActualEndOfScans才可用。 只要物理运算符到达其数据流的结尾,此计数器就增加一。 物理运算符可以到达其数据流结尾零次、一次或多次。 对于重新绑定次数和重绕次数,只有在运算符位于循环联接的内侧时,扫描结束的次数才可以多于一次。 扫描结束的次数应少于或等于重新绑定次数与重绕次数之和。

映射物理运算符和逻辑运算符

查询优化器可以创建一个查询计划,该计划由逻辑运算符组成的树表示。 查询优化器创建计划后,将为每个逻辑运算符选择最有效的物理运算符。 查询优化器使用基于开销的方法确定将实施逻辑运算符的物理运算符。

通常,一个逻辑运算符可由多个物理运算符实施。 但是在少数情况下,一个物理运算符也可以实施多个逻辑操作符。

操作说明

本节介绍了各个逻辑运算符和物理运算符。

图形执行计划图标Showplan 运算符说明
AggregateAggregate 运算符计算包含 MIN、MAX、SUM、COUNT 或 AVG 的表达式。 Aggregate既是一个逻辑运算符也是一个物理运算符。
Arithmetic expression operator iconArithmetic ExpressionArithmetic Expression 运算符根据行中的现有值计算新值。 Arithmetic Expression中不使用SQL Server 2014。
Assert operator iconAssertAssert运算符用于验证条件。 例如,验证引用完整性或确保标量子查询返回一行。 对于每个输入行,Assert运算符计算表达式的结果Argument执行计划的列。 如果此表达式的值为 NULL,则通过 Assert 运算符传递该行,并且查询执行将继续。 如果此表达式的值非 Null,则将产生相应的错误。 Assert运算符是一个物理运算符。
Assign language element iconAssignAssign运算符将表达式或常量的值分配给一个变量。 Assign是一个语言元素。
Asnyc ConcatAsnyc Concat运算符仅用于远程查询 (分布式查询)。 它具有 n 子级和一个父节点。 通常,某些子节点是参与分布式查询的远程计算机。 Asnyc Concat问题open()同时调用到所有子级,然后将位图应用于每个子。 对于为 1 的每个位Async Concat于按需父节点发送输出行。
Bitmap operator iconBitmapSQL Server使用Bitmap运算符来实现并行查询计划中的位图筛选。 通过消除无法将另一个运算符行传递给如之前生成任何联接记录的键值的行筛选可提高查询执行速度的位图Parallelism运算符。 位图筛选器使用运算符树某部分的表中一组值的简洁表示形式来筛选位于该树另一部分的第二张表中的行。 通过在查询中预先删除不必要的行,后续运算符将处理较少的行,从而提高查询的整体性能。 优化器将确定位图的选择性何时可满足使用条件以及在哪些运算符上应用筛选器。 Bitmap 是一个物理运算符。
Bitmap operator iconBitmap CreateBitmap Create 运算符出现在创建位图的显示计划输出中。 Bitmap Create是一个逻辑运算符。
Bookmark lookup operator iconBookmark LookupBookmark Lookup运算符使用书签 (行 ID 或聚集键) 以查找表或聚集的索引中的相应行。 Argument列包含书签标签,用于查找表或聚集的索引中的行。 Argument列还包含在其中查找行的聚集的索引的表的名称。 如果中出现 WITH PREFETCH 子句Argument列,则查询处理器已决定,最好是在表或聚集的索引中查找书签时使用异步预提取 (预读)。
 Bookmark Lookup中不使用SQL Server 2014。 而由 Clustered Index SeekRID Lookup 提供书签查找功能。 Key Lookup 运算符也提供此功能。
Branch Repartition在并行查询计划中,有时存在迭代器的概念性区域。 此类区域中的所有迭代器都可通过并行线程执行。 这些区域本身必须串行执行。 单个区域内的某些 Parallelism 迭代器称为 Branch Repartition。 两个这样的区域边界上的 Parallelism 迭代器称为 Segment RepartitionBranch RepartitionSegment Repartition 是逻辑运算符。
BroadcastBroadcast有一个子节点和 n 父节点。 Broadcast 根据使用者的请求将其输入行发送给多个使用者。 每个使用者都将获得所有行。 例如,如果所有使用者都生成端于哈希联接,则 n 将生成的哈希表的副本。
Build hash operator iconBuild Hash指示为 xVelocity 内存优化的列存储索引生成批处理哈希表。
CacheCache是一个专门的假脱机运算符。 它仅存储一行数据。 Cache是一个逻辑运算符。 Cache中不使用SQL Server 2014。
Clustered index delete operator iconClustered Index DeleteClustered Index Delete 运算符从查询执行计划的 Argument 列指定的聚集索引中删除行。 如果 WHERE:() 谓词中存在 Argument 列中,然后满足谓词被删除的行。Clustered Index Delete 是一个物理运算符。
Clustered index insert operator iconClustered Index InsertClustered Index Insert Showplan 运算符可将其输入行插入到 Argument 列所指定的聚集索引中。 Argument 列还包含一个 SET:() 谓词,用于指示为每一列设置的值。 如果Clustered Index Insert的插入值没有子项,插入的行则来自Insert运算符本身。Clustered Index Insert 是一个物理运算符。
Clustered index merge operatorClustered Index MergeClustered Index Merge 运算符可将合并数据流应用于聚集索引。 运算符删除、 更新或插入行中指定的聚集索引中Argument的运算符的列。 执行的实际操作取决于的运行时值操作列中指定Argument的运算符的列。 Clustered Index Merge 是一个物理运算符。
Clustered index scan operator iconClustered Index ScanClustered Index Scan 运算符会扫描查询执行计划的 Argument 列中指定的聚集索引。 存在可选 WHERE:() 谓词时,则只返回满足该谓词的那些行。 如果 Argument 列包含 ORDERED 子句,则表示查询处理器已请求按聚集索引排列行的顺序返回行输出。 如果没有 ORDERED 子句,存储引擎将以最佳方式扫描索引,而无需对输出进行排序。 Clustered Index Scan是一个逻辑和物理运算符。
Clustered index seek operator iconClustered Index SeekClustered Index Seek 运算符利用索引的查找功能从聚集索引中检索行。 Argument列包含所使用的聚集索引的名称和 SEEK:() 谓词。 存储引擎仅使用索引来处理满足此 SEEK:() 谓词的行。 它还包括 WHERE:() 谓词,其中存储引擎对满足 SEEK:() 谓词的所有行进行计算,但此操作是可选的,并且不使用索引来完成此过程。
如果Argument列包含 ORDERED 的子句,查询处理器已决定,必须按聚集的索引排序它们的顺序返回行。 如果没有 ORDERED 子句,存储引擎将以最佳方式搜索索引,而不对输出进行必要的排序。 若允许输出保持顺序,则效率可能比生成非排序输出的效率低。 出现关键字 LOOKUP 时,将执行书签查找。 在SQL Server 2008及更高版本,Key Lookup运算符提供书签查找功能。 Clustered Index Seek是一个逻辑和物理运算符。
Clustered index update operator iconClustered Index UpdateClustered Index Update运算符更新在指定的聚集索引中的输入的行Argument列。如果 WHERE:() 存在谓词,满足更新此谓词的行。 如果存在 SET:() 谓词,则将每个更新的列设置为该值。 如果存在 DEFINE:() 谓词,则列出此运算符定义的值。 可以在 SET 子句中、该运算符内的其他位置和该查询内的其他位置引用这些值。 Clustered Index Update是一个逻辑和物理运算符。
Collapse operator iconCollapseCollapse 运算符用于优化更新处理。 当执行更新时,可以拆分 (使用Split运算符) 成为删除和插入。 Argument列的包含 GROUP BY:() 子句指定的键列的列表。 如果查询处理器遇到删除和插入相同键值的相邻行,则会用一个更有效的更新操作替换这些单独的操作。 Collapse是一个逻辑和物理运算符。
Columnstore Index ScanColumnstore Index ScanColumnstore Index Scan运算符扫描中指定的列存储索引Argument查询执行计划的列。
Compute scalar operator iconCompute ScalarCompute Scalar运算符通过对表达式来生成计算标量值。 该值可以返回给用户、在查询中的其他位置引用或二者皆可。 例如,在筛选谓词或联接谓词中就会出现二者皆可的情况。 Compute Scalar是一个逻辑和物理运算符。
 Compute Scalar显示由 SET STATISTICS XML 生成的计划中出现的运算符可能不包含RunTimeInformation元素。 在图形显示计划中,当已在 中选中“包括实际的执行计划” 选项时,“实际行” “实际重新绑定次数” “实际重绕次数” 可能不会出现在 “属性” SQL Server Management Studio窗口中。 当出现这种情况时,意味着虽然编译过的查询计划中使用了这些运算符,但在运行时查询计划中,它们的作用是由其他运算符实现的。 另外,请注意,SET STATISTICS PROFILE 生成的显示计划输出中的执行数等于 SET STATISTICS XML 生成的显示计划中的重新绑定次数和重绕次数的总和。
Concatenation operator iconConcatenationConcatenation 运算符扫描多个输入,并返回每个扫描的行。 Concatenation 通常用于实现 Transact-SQL UNION ALL 结构。 Concatenation 物理运算符有两个或多个输入,有一个输出。 Concatenation 将行从第一个输入流复制到输出流,然后对其他输入流重复进行此操作。 Concatenation 既是一个逻辑运算符,也是一个物理运算符。
Constant scan operator iconConstant ScanConstant Scan运算符将一个或多个常量行引入到查询。 ACompute Scalar运算符通常之后使用Constant Scan将列添加到生成的行Constant Scan运算符。
Convert (Database Engine) language element iconConvertConvert 运算符将标量数据类型转换为另一种类型。 Convert是一个语言元素。
Cross JoinCross Join 运算符将第一个(顶端)输入中的每一行与第二个(底端)输入中的每一行联接在一起。 Cross Join是一个逻辑运算符。
Cursor catchall cursor operator iconcatchall生成图形显示计划的逻辑找不到迭代器的合适图标时,将显示通用图标。 通用图标不一定指示存在错误。 有三种通用图标:蓝色(用于迭代器)、橙色(用于游标)和绿色(用于 Transact-SQL 语言元素)。
游标Cursor 逻辑运算符和物理运算符用于描述涉及游标操作的查询或更新的执行方式。 其中物理运算符描述用于处理游标(如使用键集驱动游标)的物理实现算法。 游标执行过程的每一步都涉及物理运算符。 而逻辑运算符描述游标的属性,如游标是只读。
逻辑运算符包括 Asynchronous、Optimistic、Primary、Read Only、Scroll Locks、Secondary 和 Synchronous。
物理运算符包括 Dynamic、Fetch Query、Keyset、Population Query、Refresh Query 和 Snapshot。
Declare language element iconDeclareDeclare运算符用于分配查询计划中的本地变量。 Declare是一个语言元素。
Delete (Database Engine) operator iconDeleteDelete运算符用于从满足中的可选谓词对象行删除Argument列。
Delete scan operator iconDeleted ScanDeleted Scan 运算符在触发器中扫描删除的表。
DistinctDistinct 运算符可以从行集或值集中删除重复项。 Distinct是一个逻辑运算符。
Distinct SortDistinct Sort逻辑运算符扫描输入,删除重复项并按 DISTINCT ORDER BY 的:() 谓词中指定的列进行排序Argument列。 Distinct Sort是一个逻辑运算符。
Distribute streams parallelism operator iconDistribute StreamsDistribute Streams 运算符仅用于并行查询计划。 Distribute Streams 运算符接收记录的单个输入流,并生成多个输出流。 记录的内容和格式不会改变。 输入流中的每个记录都将在某个输出流中显示。 此运算符在输出流中自动保留输入记录的相对顺序。 通常情况下,使用哈希操作确定特定输入记录所属的输出流。
如果将输出分区,则Argument列会包含 PARTITION COLUMNS:() 谓词和分区依据列。 Distribute Streams 是一个逻辑运算符。
Dynamic cursor operator iconDynamicDynamic运算符使用可以看到其他人所做的所有更改的游标。
Spool operator iconEager SpoolEager Spool运算符获取整个输入,并在存储中的隐藏临时对象中存储每个行tempdb数据库。 如果重绕该运算符 (例如,通过Nested Loops运算符),但需要没有任何重新绑定,将使用假脱机的数据,而不用重新扫描输入。 如果需要重新绑定,则将放弃假脱机数据,并通过重新扫描(重新绑定的)输入重新生成假脱机对象。 Eager Spool 运算符按“急切”方式生成自己的假脱机文件:当假脱机的父运算符请求第一行时,假脱机运算符将获取所有来自其输入运算符的行并将其存储在假脱机中。 Eager Spool 是一个逻辑运算符。
Fetch query cursor operator iconFetch QueryFetch Query当对游标发出提取命令时,运算符将检索行。
Filter (Database Engine) operator icon筛选筛选器运算符扫描输入,并返回满足筛选器表达式 (谓词) 中显示的行Argument列。
Flow DistinctFlow Distinct逻辑运算符扫描输入,删除重复项。 而Distinct运算符生成任何输出前使用所有的输入FlowDistinct运算符返回每一行从输入获得 (除非该行是重复记录,这种情况下它将被丢弃)。
Full Outer JoinFull Outer Join逻辑运算符返回满足联接谓词中的从第一个 (顶端) 每行输入每一行与第二个 (底端) 输入联接。 它还可以从下列输入返回行:
- 在第二个输入中没有匹配项的第一个输入。
- 在第一个输入中没有匹配项的第二个输入。
 
不包含匹配值的输入将作为空值返回。 Full Outer Join是一个逻辑运算符。
Gather streams parallelism operator iconGather StreamsGather Streams 运算符仅用在并行查询计划中。 Gather Streams 运算符处理几个输入流并通过组合这几个输入流生成单个记录输出流。 记录的内容和格式不会改变。 如果此运算符保留顺序,则所有的输入流都必须有序。 如果输出已经过排序,Argument列会包含一个 ORDER BY:() 谓词和正在排序的列的名称。 Gather Streams 是一个逻辑运算符。
Hash match operator iconHash MatchHash Match 运算符通过计算其生成输入中每行的哈希值生成哈希表。 哈希:() 谓词以及用于创建哈希值的列的列表将出现在Argument列。 然后,该谓词为每个探测行(如果适用)计算哈希值(使用相同的哈希函数)并在哈希表内查找匹配项。 如果存在残留谓词 (由剩余:() 中标识Argument列),该谓词还须满足行才能被视为匹配。 行为取决于所执行的逻辑操作:
对于联接,使用第一个(顶端)输入生成哈希表,使用第二个(底端)输入探测哈希表。 按联接类型规定的模式输出匹配项(或不匹配项)。 如果多个联接使用相同的联接列,这些操作将分组为一个哈希组。
对于非重复或聚合运算符,使用输入生成哈希表(删除重复项并计算聚合表达式)。 生成哈希表时,扫描该表并输出所有项。
对于 union 运算符,使用第一个输入生成哈希表(删除重复项)。 使用第二个输入(它必须没有重复项)探测哈希表,返回所有没有匹配项的行,然后扫描该哈希表并返回所有项。
 
 Hash Match 是一个物理运算符。
If language element iconIfIf运算符执行基于表达式的有条件处理。 If是一个语言元素。
Inner JoinInner Join逻辑运算符返回满足联接第一个 (顶端) 输入与第二个 (底端) 输入的每一行。
Insert (Database Engine) operator iconInsertInsert逻辑运算符将每个行从其输入中指定的对象插入Argument列。 物理运算符为Table InsertIndex Insert,或Clustered Index Insert运算符。
Inserted scan operator iconInserted ScanInserted Scan 运算符扫描 插入的 表。 Inserted Scan 既是一个逻辑运算符,也是一个物理运算符。
Intrinsic language element iconIntrinsicIntrinsic运算符调用内部Transact-SQL函数。 Intrinsic是一个语言元素。
Iterator catchall operator iconIterator生成图形显示计划的逻辑找不到 Iterator 的合适图标时,将显示通用图标。 通用图标不一定指示存在错误。 有三种通用图标:蓝色(用于迭代器)、橙色(用于游标)和绿色(用于 Transact-SQL 语言构造)。
Bookmark lookup operator iconKey LookupKey Lookup运算符是具有聚集索引的表上的书签查找。 Argument列包含聚集的索引,并且用来查找行的聚集索引中聚集键的名称。 Key Lookup通常带有Nested Loops运算符。 如果中出现 WITH PREFETCH 子句Argument列,则查询处理器已决定,最好是在聚集索引中查找书签时使用异步预提取 (预读)。
使用Key Lookup运算符在查询计划中的指示该查询可能会从性能优化中获益。 例如,添加涵盖索引可能会提高查询性能。
Keyset cursor operator iconKeysetKeyset 运算符使用的游标可用于查看其他用户所做的更新,而不能查看其他用户所做的插入。
Language element catchall iconLanguage Element生成图形显示计划的逻辑找不到 Language Element 的合适图标时,将显示通用图标。 通用图标不一定指示存在错误。 有三种通用图标:蓝色(用于迭代器)、橙色(用于游标)和绿色(用于 Transact-SQL 语言构造)。
Spool operator iconLazy SpoolLazy Spool逻辑运算符将从其输入的每一行存储中存储的隐藏临时对象中tempdb数据库。 如果重绕该运算符 (例如,通过Nested Loops运算符),但需要没有任何重新绑定,将使用假脱机的数据,而不用重新扫描输入。 如果需要重新绑定,则将放弃假脱机数据,并通过重新扫描(重新绑定的)输入重新生成假脱机对象。 Lazy Spool 运算符以“迟缓”方式生成其假脱机文件,即每当假脱机父运算符请求一行时,假脱机运算符便从其输入运算符获取一行,然后将该行存储在假脱机中,而不是一次处理所有行。 Lazy Spool 是一个逻辑运算符。
Left Anti Semi Join当第二个(底端)输入中没有匹配行时,Left Anti Semi Join 运算符返回第一个(顶端)输入中的每一行。 如果在不存在任何联接谓词Argument列中,每一行都是匹配的行。 Left Anti Semi Join是一个逻辑运算符。
Left Outer JoinLeft Outer Join 运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。 它还返回任何在第二个输入中没有匹配行的第一个输入中的行。 第二个输入中的非匹配行作为空值返回。 如果在不存在任何联接谓词Argument列中,每一行都是匹配的行。 Left Outer Join是一个逻辑运算符。
Left Semi JoinLeft Semi Join运算符的第一个 (顶端) 输入返回每一行,在第二个 (底端) 输入中没有匹配行时。 如果在不存在任何联接谓词Argument列中,每一行都是匹配的行。 Left Semi Join是一个逻辑运算符。
Log row scan operator iconLog Row ScanLog Row Scan运算符用于扫描事务日志。 Log Row Scan是一个逻辑和物理运算符。
Merge interval operator iconMerge IntervalMerge Interval运算符可合并多个的 (可能重叠的) 间隔以得出最小的不重叠间隔,然后用于查找索引项。 此运算符通常出现上述一个或多个Compute Scalar运算符Constant Scan运算符,构造 (表示为一行中的列) 的时间间隔,此运算符所合并。 Merge Interval是一个逻辑和物理运算符。
Merge join operator icon合并联接Merge Join 运算符执行内部联接、左外部联接、左半部联接、左反半部联接、右外部联接、右半部联接、右反半部联接和联合逻辑运算。
Argument列, Merge Join运算符包含合并:() 谓词,如果该操作正在执行一个对多联接,或多对多:() 合并谓词,如果操作的执行多对多联接。 Argument列还包括用于执行该操作的列的逗号分隔列表。 Merge Join 运算符要求在各自的列上对两个输入进行排序,这可以通过在查询计划中插入显式排序操作来实现。 如果不需要显式排序(例如,如果数据库内有合适的 B 树索引或可以对多个操作(如合并联接和对汇总分组)使用排序顺序),则合并联接尤其有效。 Merge Join 是一个物理运算符。
Nested loops operator iconNested LoopsNested Loops 运算符执行内部联接、左外部联接、左半部联接和左反半部联接逻辑运算。 嵌套循环联接通常使用索引,针对外部表的每一行在内部表中执行搜索。 查询处理器根据预计的开销来决定是否对外部输入进行排序,以改进内部输入索引上的搜索定位。 满足 (可选) 谓词中的任何行Argument列中返回在适用,根据所执行的逻辑操作。 Nested Loops 是一个物理运算符。
Nonclustered index delete operator iconNonclustered Index DeleteNonclustered Index Delete运算符中指定的非聚集索引删除输入的行Argument列。 Nonclustered Index Delete 是一个物理运算符。
Nonclustered index insert operator iconIndex InsertIndex Insert运算符将行从其输入插入中指定的非聚集索引Argument列。 Argument列还包含一个 SET:() 谓词,用于指示为每个列设置的值。 Index Insert 是一个物理运算符。
Nonclustered index scan operator iconIndex ScanIndex Scan运算符将检索所有行中指定的非聚集索引Argument列。 如果其中:() 谓词出现在一个可选Argument列中,返回满足该谓词的行。 Index Scan是一个逻辑和物理运算符。
Nonclustered index seek operator iconIndex SeekIndex Seek运算符利用索引的查找功能从非聚集索引中检索行。 Argument列包含所使用的非聚集索引的名称。 它还包括 SEEK:() 谓词。 存储引擎仅使用索引来处理满足 SEEK:() 谓词的行。 它可能还包含一个 WHERE:() 谓词,其中存储引擎对满足 SEEK:() 谓词的所有行进行计算(不使用索引来完成)。 如果Argument列包含 ORDERED 的子句,查询处理器已决定,必须在其中的非聚集索引排序顺序返回行。 如果没有 ORDERED 子句,则存储引擎将以最佳方式(不保证对输出排序)搜索索引。 如果让输出保持其顺序,则效率可能低于生成非排序输出。 Index Seek是一个逻辑和物理运算符。
Nonclustered index spool operator iconIndex SpoolIndex Spool物理运算符包含中的 predicate:() 搜寻Argument列。 Index Spool运算符扫描其输入的行,将每个行的副本放置在隐藏的假脱机文件 (存储在tempdb数据库中并且仅为查询的生存期内存),并生成非聚集索引的行。 这样可以使用索引的查找功能来仅输出那些满足 SEEK:() 谓词的行。 如果重绕该运算符 (例如,通过Nested Loops运算符),但需要没有任何重新绑定,将使用假脱机的数据,而不用重新扫描输入。
Nonclustered index update operator iconNonclustered Index UpdateNonclustered Index Update物理运算符用于更新行中指定的非聚集索引中的输入Argument列。 如果存在 SET:() 谓词,则将每个更新的列设置为该值。 Nonclustered Index Update 是一个物理运算符。
Online index insert operator iconOnline Index InsertOnline Index Insert 物理运算符指示索引创建、更改或删除操作是在线执行的。 也就是说,基础表数据在索引操作期间仍然对用户可用。
ParallelismParallelism运算符执行分发流、 收集流和对流重新分区逻辑操作。 Argument列可以包含一个 PARTITION COLUMNS:() 谓词和分区的列的逗号分隔列表。 Argument列还可以包含一个 ORDER BY:() 谓词,列出要在分区过程中保留的排序顺序的列。 Parallelism 是一个物理运算符。
注意: 如果查询已编译为并行查询,但在运行时它运行作为串行查询,显示计划输出生成通过 SET STATISTICS XML 或通过使用包括实际的执行计划选项SQL Server Management Studio将不包含RunTimeInformation元素Parallelism运算符。 在 SET STATISTICS PROFILE 输出中的实际行计数和实际执行数将显示为零Parallelism运算符。 当发生的任何一个条件时,这意味着,Parallelism运算符仅用在查询编译期间,不能在运行时查询计划。 请注意,如果服务器上的并发负荷很高,则并行查询计划有时会以串行方式运行。
Parameter table scan operator iconParameter Table ScanParameter Table Scan运算符扫描用作当前查询中参数的表。 该运算符一般用于存储过程内的 INSERT 查询。 Parameter Table Scan是一个逻辑和物理运算符。
Partial AggregatePartial Aggregate 用于并行计划中。 它将聚合功能应用到尽可能多的输入行中,以便不必执行向磁盘写入数据的操作(称为“溢出”)。 Hash Match是实现分区聚合的唯一一个物理运算符 (迭代器)。 Partial Aggregate 是一个逻辑运算符。
Population query cursor operator iconPopulation QueryPopulation Query 运算符在打开游标时填充游标的工作表。
Refresh query cursor operator iconRefresh QueryRefresh Query 运算符为提取缓冲区中的行提取当前数据。
Remote delete operator iconRemote DeleteRemote Delete运算符从远程对象中删除输入的行。 Remote Delete是一个逻辑和物理运算符。
remote index seek showplan operatorRemote Index ScanRemote Index Scan 运算符可以扫描在 Argument 列中指定的远程索引。 Remote Index Scan 既是一个逻辑运算符,也是一个物理运算符。
remote index seek showplan operatorRemote Index SeekRemote Index Seek 运算符利用远程索引对象的查找功能来检索行。 Argument列包含所使用的远程索引的名称和 SEEK:() 谓词。 Remote Index Seek 是一个逻辑物理运算符。
Remote insert operator iconRemote InsertRemote Insert 运算符将输入行插入到远程对象。 Remote Insert 既是一个逻辑运算符,也是一个物理运算符。
Remote query operator iconRemote QueryRemote Query运算符将提交给远程源查询。 发送到远程服务器的查询文本显示在Argument列。 Remote Query是一个逻辑和物理运算符。
Remote scan operator iconRemote ScanRemote Scan运算符扫描远程对象。 远程对象的名称显示在Argument列。 Remote Scan是一个逻辑和物理运算符。
Remote update operator iconRemote UpdateRemote Update运算符将更新远程对象中的输入的行。 Remote Update是一个逻辑和物理运算符。
Repartition streams parallelism operator iconRepartition StreamsRepartition Streams 运算符使用多个流并生成多个记录流。 记录的内容和格式不会改变。 如果查询优化器使用位图筛选器,则输出流中行的数量将减少。 输入流中的每个记录都放入一个输出流中。 如果该运算符保留次序,则必须对所有输入流排序并将它们合并到几个有序的输出流中。 如果将输出分区,Argument列会包含 PARTITION COLUMNS:() 谓词和分区依据列。如果输出已经过排序,Argument列会包含一个 ORDER BY:() 谓词和已经排序的列。 Repartition Streams 是一个逻辑运算符。 该运算符只用于并行查询计划中。
Result language element iconResultResult运算符是查询计划结束时返回的数据。 它通常是显示计划的根元素。 Result是一个语言元素。
RID lookup operator iconRID LookupRID Lookup使用提供的行标识符 (RID) 在堆上的书签查找。 Argument列包含书签标签,用于查找表和在其中查找行的表的名称中的行。 RID Lookup 通常带有 NESTED LOOP JOIN。 RID Lookup 是一个物理运算符。 有关书签查找的详细信息,请参阅 MSDN SQL Server 博客中的Bookmark Lookup(书签查找)。
Right Anti Semi JoinRight Anti Semi Join运算符输出第二个 (底端) 输入中的每个行,第一个 (顶端) 输入一个匹配行不存在。 匹配的行定义为满足中的谓词的行Argument列 (如果不存在谓词,每一行都是一个匹配行)。 Right Anti Semi Join是一个逻辑运算符。
Right Outer JoinRight Outer Join运算符返回满足联接第二个 (底端) 输入与第一个 (顶端) 输入每个匹配行的每一行。 此外,它还返回第二个输入中在第一个输入中没有匹配行的任何行,即与 NULL 联接。 如果在不存在任何联接谓词Argument列中,每一行都是匹配的行。 Right Outer Join是一个逻辑运算符。
Right Semi Join第一个(顶端)输入有匹配行时,Right Semi Join 运算符返回第二个(底端)输入中的每一行。 如果在不存在任何联接谓词Argument列中,每一行都是匹配的行。 Right Semi Join是一个逻辑运算符。
Row count spool operator iconRow Count SpoolRow Count Spool 运算符扫描输入,计算现有的行数并返回相同数目的不包含任何数据的行。 必须检查现有行数(而非行中包含的数据)时,使用此运算符。 例如,如果Nested Loops运算符执行左的半联接操作且联接谓词应用于内部输入,可能在内部输入的顶部放置行计数假脱机Nested Loops运算符。 则Nested Loops运算符可以确定有多少行可通过行计数假脱机输出 (因为不需要内侧的实际数据) 来确定是否返回外部行。 Row Count Spool 是一个物理运算符。
Segment operator iconSegment 既是一个物理运算符,也是一个逻辑运算符。 它基于一个或多个列的值将输入集划分成多个段。 这些列显示为 Segment 运算符中的参数。 然后此运算符每次输出一个段。
Segment Repartition在并行查询计划中,有时存在迭代器的概念性区域。 此类区域中的所有迭代器都可通过并行线程执行。 这些区域本身必须串行执行。 单个区域内的某些 Parallelism 迭代器称为 Branch Repartition。 两个这样的区域边界上的 Parallelism 迭代器称为 Segment RepartitionBranch RepartitionSegment Repartition 是逻辑运算符。
Sequence operator iconSequenceSequence运算符驱动大范围更新计划。 就其功能而言,该运算符按顺序(从上到下)执行每个输入。 每个输入通常是不同对象的更新。 该运算符只返回其上一个(底端)输入中的行。 Sequence是一个逻辑和物理运算符。
Sequence project operator iconSequence ProjectSequence Project运算符将添加列以便计算有序集。 它基于一个或多个列的值将输入集划分成多个段。 然后此运算符每次输出一个段。 这些列在 Sequence Project 运算符中作为参数显示。 Sequence Project是一个逻辑和物理运算符。
Snapshot cursor operator icon快照Snapshot 运算符创建一个看不到其他人所做更改的游标。
Sort operator iconSortSort运算符对所有传入行进行排序。 Argument列包含 DISTINCT ORDER BY:() 谓词,如果此操作,删除了重复项或一个 ORDER BY:() 谓词待排序的列的逗号分隔列表。 如果按升序对列排序,则使用值 ASC 作为列的前缀;如果按降序对列排序,则使用值 DESC 作为列的前缀。 Sort是一个逻辑和物理运算符。
Split operator iconSplitSplit运算符用于优化更新处理。 它将每个更新操作拆分成删除和插入操作。 Split是一个逻辑和物理运算符。
Spool operator iconSpool假脱机运算符将保存到中间查询结果tempdb数据库。
Stream aggregate operator iconStream AggregateStream Aggregate运算符按一个或多个列对行分组,然后计算由查询返回的一个或多个聚合表达式。 此运算符的输出可供查询中的后续运算符引用和/或返回到客户端。 Stream Aggregate 运算符要求输入在组中按列进行排序。 如果由于前面的 Sort 运算符或已排序的索引查找或扫描导致数据尚未排序,则优化器将在此运算符前面使用一个 Sort 运算符。 在 SHOWPLAN_ALL 语句或中的图形执行计划SQL Server Management Studio,GROUP BY 谓词中的列中列出Argument中列出列,而聚合表达式定义的值列。 Stream Aggregate 是一个物理运算符。
Switch operator icon开关交换机是一种特殊类型的串联迭代器具有 n 输入。 有一个表达式与每个 Switch 运算符关联。 根据表达式的返回值 (介于 0 和 n -1),交换机将适当的输入的流复制到输出流。 Switch 的一种用途是与某些运算符(如 TOP 运算符)一起实现涉及快进游标的查询计划。 Switch 既是一个逻辑运算符,也是一个物理运算符。
Table delete operator iconTable DeleteTable Delete物理运算符用于从指定的表中删除行Argument查询执行计划的列。
Table insert operator iconTable InsertTable Insert运算符将行从其输入插入指定的表中插入Argument查询执行计划的列。 Argument列还包含一个 SET:() 谓词,用于指示为每个列设置的值。 如果Table Insert的插入值没有子项,然后插入的行则来自 Insert 运算符本身。 Table Insert 是一个物理运算符。
Table merge operatorTable MergeTable Merge 运算符可将合并数据流应用到堆。 运算符删除、 更新或中指定的表中插入行Argument的运算符的列。 执行的实际操作取决于的运行时值操作列中指定Argument的运算符的列。 Table Merge 是一个物理运算符。
Table scan operator iconTable ScanTable Scan运算符从指定的表中检索所有行Argument查询执行计划的列。 如果 WHERE:() 谓词出现在Argument列中,返回满足该谓词的行。 Table Scan是一个逻辑和物理运算符。
Table spool operator iconTable SpoolTable Spool 运算符扫描输入,并将各行的一个副本放入隐藏的假脱机表中,此表存储在 tempdb 数据库中并且仅在查询的生存期内存在。 如果重绕该运算符 (例如,通过Nested Loops运算符),但需要没有任何重新绑定,将使用假脱机的数据,而不用重新扫描输入。 Table Spool 是一个物理运算符。
Table update operator iconTable UpdateTable Update物理运算符用于更新中指定的表中的输入的行Argument查询执行计划的列。 SET:() 谓词确定每个更新列的值。 可以在 SET 子句中、此运算符内的其他位置以及此查询内的其他位置引用这些值。
Table-valued function operator iconTable-valued FunctionTable-valued Function 运算符计算表值函数( Transact-SQL 或 CLR)并将结果行存储在 tempdb 数据库中。 当父迭代器请求这些行,表值函数返回从行tempdb
调用表值函数的查询生成具有 Table-valued Function 迭代器的查询计划。 可以使用不同的参数值计算Table-valued Function
 Table-valued Function XML Reader 输入 XML BLOB 作为参数,并生成一个按 XML 文档顺序表示 XML 节点的行集。 其他输入参数可能会将返回的 XML 节点限于 XML 文档的子集。
 Table Valued Function XML Reader with XPath filter 是一种特殊类型的 XML Reader Table-valued Function ,它将输出限于满足 XPath 表达式的 XML 节点。
 
 Table-valued Function 既是一个逻辑运算符,也是一个物理运算符。
Top operator iconTopTop 运算符扫描输入,但仅基于排序顺序返回最前面的指定行数或行百分比。 Argument列可以包含要检查重复值的列的列表。 在更新计划中, Top 运算符用于强制实施行计数限制。 Top 既是一个逻辑运算符,也是一个物理运算符。 Top 既是一个逻辑运算符,也是一个物理运算符。
Top N SortTop N Sort类似于Sort迭代器,只有第一个除外N需要行,而不是整个结果集。 如果 N的值较小, SQL Server 查询执行引擎将尝试在内存中执行整个排序操作。 如果 N的值较大,查询执行引擎将使用更通用的排序方法(该方法不采用 N 作为参数)重新排序。
Extended operator (UDX) iconUDX扩展运算符 (UDX) 可以实现 SQL Server中的一种 XQuery 或 XPath 操作。 所有 UDX 运算符既是逻辑运算符,又是物理运算符。
扩展的运算符 (UDX)FOR XML用于序列化其输入到单个输出行中的单个 BLOB 列中的 XML 表示形式的关系行集。 它是区分顺序的 XML 聚合运算符。
扩展运算符 (UDX) XML SERIALIZER 是区分顺序的一种 XML 聚合运算符。 它以 XML 文档顺序输入表示 XML 节点或 XQuery 标量的行,并在单个输出行、单个 XML 列中生成序列化的 XML BLOB。
扩展运算符 (UDX) XML FRAGMENT SERIALIZER 是一种特殊类型的 XML SERIALIZER,用于处理表示在 XQuery 插入数据修改扩展中插入的 XML 片断的输入行。
扩展运算符 (UDX) XQUERY STRING 计算表示 XML 节点的输入行的 XQuery 字符串值。 它是一个区分顺序的字符串聚合运算符。 它输出一行多列,表示包含输入字符串值的 XQuery 标量。
扩展运算符 (UDX) XQUERY LIST DECOMPOSER 是一个 XQuery 列表分解运算符。 对于表示 XML 节点的每个输入行,它至少生成表示 XQuery 标量的一个行,如果输入的是 XSD 列表类型的行,则每个行都包含一个列表元素值。
扩展运算符 (UDX) XQUERY DATA 在表示 XML 节点的输入行上计算 XQuery fn:data() 函数的值。 它是一个区分顺序的字符串聚合运算符。 它输出一行多列,表示包含 fn:data()结果的 XQuery 标量。
扩展运算符 XQUERY CONTAINS 在表示 XML 节点的输入行上计算 XQuery fn:contains() 函数的值。 它是一个区分顺序的字符串聚合运算符。 它输出一行多列,表示包含 fn:contains()结果的 XQuery 标量。
扩展的运算符UPDATE XML NODE更新 XML 节点中 XQuery 替换数据修改扩展中的modify () XML 类型的方法。
UnionUnion 运算符扫描多个输入,输出扫描的每一行并删除重复项。 Union 是一个逻辑运算符。
Update (Database Engine) operator iconUpdateUpdate运算符更新每个行中指定的对象中的输入Argument查询执行计划的列。 Update是一个逻辑运算符。 物理运算符为 Table UpdateIndex UpdateClustered Index Update
While language element iconWhileWhile运算符实现Transact-SQLwhile 循环。 While是一个语言元素
Table spool operator iconWindow SpoolWindow Spool 运算符将每个行扩展为表示与行关联的窗口的行集。 在查询中,OVER 子句定义查询结果集内的窗口和窗口函数,然后计算窗口中的每个行的值。 Window Spool是一个逻辑和物理运算符。
显示:         继承                  保护             
    

转载于:https://www.cnblogs.com/firstdream/p/7504218.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在win10中通过Anaconda3安装tensorflow

安装Anaconda3,然后在所有程序中启动“Anaconda Navigator”,如图: 切换到“Enviroments"(环境)中,在右边有个显示环境的列表,默认有"base(root)",然后单击底部的”Create"按钮创建一个…

功能接口简介–在Java 8中重新创建的概念

世界各地的所有Java开发人员都将至少使用以下接口之一:java.lang.Runnable,java.awt.event.ActionListener,java.util.Comparator,java.util.concurrent.Callable。 声明的接口之间有一些共同的特征,该特征是它们在接口…

计算机专业学生求职信500字,计算机专业求职信500字范文

计算机专业求职信500字范文尊敬的领导:您好!请恕打扰,我是荆楚理工学院计算机工程学院的一个大学生,即将面临毕业.我很荣幸有机回向您呈上我的个人资料.在投身社会之际,为了找到符合自己专业和兴趣的工作,更好地发挥自己的才能,实…

使用Spring数据和Thymeleaf实现Bootstrap分页

Twitter Bootstrap具有非常好的分页UI ,在这里我将向您展示如何使用Spring Data Web分页功能和Thymeleaf条件评估功能来实现它。 引导程序中的标准分页 受Rdio启发的简单分页,非常适合应用程序和搜索结果。 大块很难错过,易于扩展&#xff0…

一道前端学习题

对于没参加过互联网企业招聘,或是没有参加过大型互联网企业招聘的人来说,能以这些公司的面试题做为锻炼,无疑是一种非常好的学习和进步的途径。下面是一道腾讯的前端面试题(JS解答),题目本身在现实中意义不大,主要是考…

codefroces 297E Mystic Carvings

problem&#xff1a;一个圆上依次有1~2*n的数字。每个数字都有且只有另一个数字与他相连。选出三条线&#xff0c;使得每条线的两端之间隔的最少点(只包括被选择的6个点)的个数相等。输入输出格式输入格式&#xff1a;The first line contains integer n(3<n<10^5) — th…

监听网页微信扫码支付成功_网付扫码点餐新福利,消费者点餐可获微信支付金币奖励...

扫码点餐相信大家都不陌生&#xff0c;即能餐饮解决商家人力物力投入成本痛点&#xff0c;又能方便消费者点餐。现今已成为了餐饮商户的标配系统。近两年&#xff0c;很多系统厂商都在试水扫码点餐领域。尤其是聚合支付服务商&#xff0c;拥有得天独厚的优势。市面上各家扫码点…

在Play上使用twitter4j! 框架和安全社交很容易

在昨天的个人黑客马拉松期间&#xff0c;我启动了一个项目&#xff0c;我可能会在这里介绍。 但是&#xff0c;最酷的启示是&#xff08;再次&#xff09;启动和运行起来有多么容易。 创建一个新的Play项目 添加Secure Social并为Twitter配置它&#xff0c;并使用示例中的InM…

Python 冒泡排序三种写法

需求&#xff1a;输入 n 个整数并将这些数字以从大到小和从小到大的顺序输出代码如下&#xff1a;bubble_sort_v1 1 #coding:utf-82 #__author__ Diva3 4 # 升序&#xff08;从小到大&#xff09;5 SORT_TYPE_ASC 16 # 降序&#xff08;从大到小&#xff09;7 SORT_TYPE_DE…

ptmalloc内存分配和回收详解(文字版)

ptmalloc内存分配和回收详解&#xff08;文字版&#xff09; 进程默认内存布局&#xff08;x86&#xff09; 从进程的内存布局可知&#xff0c;.bss段之上的这块分配给用户程序的空间被称之为heap&#xff0c;start_brk指向heap的开始&#xff0c;而brk指向heap的顶部。可以使用…

linux nfs

linux&#xff08;十四&#xff09;之linux NFS服务管理学到这里差不多就结束了linux的基础学习了&#xff0c;其实linux的内容并不难&#xff0c;我们要经常的反复的去操作它&#xff0c;多多和它去联络感情才能很好的掌握这个linux。 加油&#xff01;今天是星期二。没有什么…

下来安成功 打开一直白屏_推广人透露:戈洛夫金2021年可能与安德拉德上演拳王统一战...

IBF中量级拳王根纳季-戈洛夫金(Gennadiy Golovkin)随着本月摧毁强制挑战者卡米尔-塞泽梅塔(Kamil Szeremeta)&#xff0c;使得下一场比赛在对手选择问题上&#xff0c;具有很大的自由度。戈洛夫金的推广人埃迪-赫恩做客Sirius XM访谈时&#xff0c;透露了一个重要消息&#xff…

WEB接口测试之Jmeter接口测试自动化 (四)

Jmeter是压力测试、接口测试工具&#xff0c;Ant是基于Java的构建工具&#xff0c;具有跨平台的作用&#xff0c;jenkins是持续集成工具。将这三者结合起来可以搭建一套webservice接口测试的持续构建环境。 1、安装JDK&#xff0c;配置java环境变量&#xff08;略过&#xff09…

dnf机器人猜数字奖励_DNF:周年庆策划啪啪打脸,工作人员也出错误,难道又是临时工的锅?...

本来应该是很喜庆的一天&#xff0c;结果又遇见了策划啪啪打脸的事情&#xff0c;关键还连累玩家提心吊胆的。往年都是登录游戏送豪礼&#xff0c;今年策划就像搞点不一样&#xff0c;估计是认为今年送的“即时”史诗比较多吧。然后就很任性的在领取豪礼之前添加了一道“礼物申…

练习 3.16

如题&#xff1a;下面是某大学数据库的一组需求&#xff0c;此数据库用于记录学生的成绩&#xff0c;这与图1.2所示数据库类似&#xff0c;但并不完全相同。 a. 大学要记录每个学生的姓名、学号、社会保险号、当前地址与电话、永久地址与电话、出生日期、性别、年级&#xff08…

中国连计算机硬盘都无法生产吗,中国仍无能力制造出电脑中的硬盘

从最开始的40GB到现在的3TB甚至更大&#xff0c;硬盘技术已经发生了突飞猛进的发展&#xff0c;就连以往高高在上的SSD固态硬盘也从去年开始展现出大容量普及的趋势。但是&#xff0c;至今为止我们为何没有看到一款国产品牌的硬盘杀入市场呢&#xff1f;今日头条中一篇文章或许…

d3 i5 神舟精盾k480n_6款神舟精盾轻薄记本发布,10nm十代酷睿,匠心打造国潮好本...

神舟电脑新品&#xff1a;神舟精盾发布会已于2019年10月31日上午在深圳神舟电脑大厦招开&#xff0c;此次发布会一共发布了6款精盾系列的轻薄笔记本。 此次还有英特尔、英伟达、微软等重量级合作伙伴的大咖站台助力&#xff0c;神舟电脑产品总监王小陈先生、神舟电脑创新一部销…

css中border制作各种形状

css利用border制作各种形状的原理如图&#xff1a; 使用border绘制三角形是什么原理&#xff1f;事实上&#xff0c;宽度相等的border是以45度对接的&#xff0c;如下图: 没有了上border如图所示&#xff1a; 再设置border的宽度为0&#xff1a; 设置border的高度为0&#xff…

2016 linux发行版排行_选择困难症必看!云服务器如何选择操作系统,Windows和Linux哪个更好?...

在购买云服务器时&#xff0c;会有一个必选的配置&#xff0c;就是操作系统的选择&#xff0c;如何选择操作系统&#xff1f;操作系统选择错了怎么办&#xff1f;这是不少用户会遇到的问题&#xff0c;今天我们就来教大家如何选择操作系统&#xff0c;以及操作系统选择错了&…

怎样不通过高考进入清华计算机系,山东高考状元孟令昊澄清,没有参加政审,已经填报清华计算机系!...

原标题&#xff1a;山东高考状元孟令昊澄清&#xff0c;没有参加政审&#xff0c;已经填报清华计算机系&#xff01;说到高考状元&#xff0c;其实每年在高考分数公布以后和志愿填报的时候&#xff0c;他们都是大家最为关注的群体&#xff0c;特别是对于这些状元的去向成为了很…