執行程序邏輯和實體運算子參考Showplan Logical and Physical Operators Reference

適用於: 是SQL Server 是Azure SQL Database 否Azure Synapse Analytics (SQL DW) 否平行處理資料倉儲 APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

運算子說明 SQL ServerSQL Server 如何執行查詢或資料操作語言 (DML) 陳述式。Operators describe how SQL ServerSQL Server executes a query or a Data Manipulation Language (DML) statement. 查詢最佳化工具會使用運算子來建立查詢計畫,以便建立查詢所指定的結果,或執行 DML 陳述式所指定的作業。The query optimizer uses operators to build a query plan to create the result specified in the query, or to perform the operation specified in the DML statement. 查詢計畫是由實體運算子所組成的樹狀目錄。The query plan is a tree consisting of physical operators. 您可使用 SQL Server Management StudioSQL Server Management Studio中的圖形執行計畫選項 SET SHOWPLAN 陳述式,以及 SQL Server Profiler Showplan 事件類別,檢視查詢計畫。You can view the query plan by using the SET SHOWPLAN statements, the graphical execution plan options in SQL Server Management StudioSQL Server Management Studio, or the SQL Server Profiler Showplan event classes.

運算子可分為邏輯與實體運算子兩種。Operators are classified as logical and physical operators.

邏輯運算子Logical Operators
邏輯運算子說明用來處理陳述式的關聯式代數作業。Logical operators describe the relational algebraic operation used to process a statement. 換句話說,邏輯運算子可就概念上說明需要執行哪項作業。In other words, logical operators describe conceptually what operation needs to be performed.

實體運算子Physical Operators
實體運算子會實作邏輯運算子所描述的作業。Physical operators implement the operation described by logical operators. 每個實體運算子都是執行作業的物件或常式。Each physical operator is an object or routine that performs an operation. 例如,有些實體運算子會從資料表、索引或檢視表中存取資料行或資料列。For example, some physical operators access columns or rows from a table, index or view. 其他實體運算子則會執行其他操作,如計算、彙總、資料完整性檢查或聯結。Other physical operators perform other operations such as calculations, aggregations, data integrity checks or joins. 實體運算子會有上述項目的相關成本。Physical operators have costs associated with them.

實體運算子可進行初始化、收集資料及關閉。The physical operators initialize, collect data, and close. 特別是,實體運算子可回應下列三種方法呼叫:Specifically, the physical operator can answer the following three method calls:

  • Init()Init() 方法會使實體運算子自行初始化,並設定任何必要的資料結構。Init(): The Init() method causes a physical operator to initialize itself and set up any required data structures. 實體運算子可接收許多 Init() 呼叫,但通常實體運算子只會接收一個。The physical operator may receive many Init() calls, though typically a physical operator receives only one.

  • GetNext()GetNext() 方法會使實體運算子取得資料的第一個或下一個資料列。GetNext(): The GetNext() method causes a physical operator to get the first, or subsequent row of data. 實體運算子可能會接收零個或許多 GetNext() 呼叫。The physical operator may receive zero or many GetNext() calls.

  • Close()Close() 方法會使實體運算子執行某些清除作業並自行關閉。Close(): The Close() method causes a physical operator to perform some clean-up operations and shut itself down. 實體運算子只會接收一個 Close() 呼叫。A physical operator only receives one Close() call.

GetNext() 方法會傳回一列資料,而它被呼叫的次數會在使用 SET STATISTICS PROFILE ON or SET STATISTICS XML ON 所產生的「執行程序表」輸出中顯示為 ActualRowsThe GetNext() method returns one row of data, and the number of times it is called appears as ActualRows in the Showplan output that is produced by using SET STATISTICS PROFILE ON or SET STATISTICS XML ON. 如需這些 SET 選項的詳細資訊,請參閱 SET STATISTICS PROFILE (Transact-SQL)SET STATISTICS XML (Transact-SQL)For more information about these SET options, see SET STATISTICS PROFILE (Transact-SQL) and SET STATISTICS XML (Transact-SQL).

「執行程序表」輸出中顯示的 ActualRebindsActualRewinds 計數代表 Init() 方法被呼叫的次數。The ActualRebinds and ActualRewinds counts that appear in Showplan output refer to the number of times that the Init() method is called. 除非運算子位於迴圈聯結的內部,否則 ActualRebinds 會等於一,而 ActualRewinds 會等於零。Unless an operator is on the inner side of a loop join, ActualRebinds equals one and ActualRewinds equals zero. 如果運算子位於迴圈聯結的內部,重新繫結和倒轉數目的總和應該會等於聯結外部所處理的資料列數目。If an operator is on the inner side of a loop join, the sum of the number of rebinds and rewinds should equal the number of rows processed on the outer side of the join. 重新繫結是指聯結中有一或多個相互關聯的參數發生變更,而必須重新評估內部。A rebind means that one or more of the correlated parameters of the join changed and the inner side must be reevaluated. 倒轉是指相互關聯的參數沒有發生變更,先前的內部結果集可供重複使用。A rewind means that none of the correlated parameters changed and the prior inner result set may be reused.

ActualRebindsActualRewinds 會顯示在使用 SET STATISTICS XML ON 產生的「XML 執行程序表」輸出中。ActualRebinds and ActualRewinds are present in XML Showplan output produced by using SET STATISTICS XML ON. 他們只會填入「非叢集索引多工緩衝處理」 、「選端查詢」 、「資料列計數多工緩衝處理」 、「排序」 、「資料表多工緩衝處理」 以及「資料表值函式」 運算子中。They are only populated for the Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool, and Table-valued Function operators. StartupExpression 屬性設為 TRUE 時,ActualRebindsActualRewinds 也會填入「判斷」 和「篩選」 運算子。ActualRebinds and ActualRewinds may also be populated for the Assert and Filter operators when the StartupExpression attribute is set to TRUE.

「XML 執行程序表」中有 ActualRebindsActualRewinds 時,您可將它們與 EstimateRebindsEstimateRewinds 做比較。When ActualRebinds and ActualRewinds are present in an XML Showplan, they are comparable to EstimateRebinds and EstimateRewinds. 如果沒有,則可將估計的資料列數目 (EstimateRows) 和實際資料列數目 (ActualRows) 做比較。When they are absent, the estimated number of rows (EstimateRows) is comparable to the actual number of rows (ActualRows). 請注意,如果沒有實際重新繫結和實際倒轉,實際圖形「執行程序表」輸出便會顯示零。Note that actual graphical Showplan output displays zeros for the actual rebinds and actual rewinds when they are absent.

只有當「執行程序表」輸出是以 SET STATISTICS XML ON 產生時,才可使用相關的計數器 ActualEndOfScansA related counter, ActualEndOfScans, is available only when Showplan output is produced by using SET STATISTICS XML ON. 每當實體運算子存取至其資料流結尾時,此計數器就會累加 1。Whenever a physical operator reaches the end of its data stream, this counter is incremented by one. 實體運算子可存取其資料流結尾零次、一次或多次。A physical operator can reach the end of its data stream zero, one, or multiple times. 如同重新繫結和倒轉,只有當運算子位於迴圈聯結內部時,結尾掃描次數才能大於 1。As with rebinds and rewinds, the number of end of scans can be more than one only if the operator is on the inner side of a loop join. 結尾掃描次數應小於或等於重新繫結和倒轉的數目總和。The number of end of scans should be less than or equal to the sum of the number of rebinds and rewinds.

對應實體與邏輯運算子Mapping Physical and Logical Operators

查詢最佳化工具會將查詢計畫建立為由邏輯運算子所組成的樹狀目錄。The query optimizer creates a query plan as a tree consisting of logical operators. 在查詢最佳化工具建立計畫之後,它會為每個邏輯運算子選擇最有效率的實體運算子。After the query optimizer creates the plan, the query optimizer chooses the most efficient physical operator for each logical operator. 查詢最佳化工具會使用以成本為基礎的方法,判斷哪個實體運算子將實作邏輯運算子。The query optimizer uses a cost-based approach to determine which physical operator will implement a logical operator.

一個邏輯運算子通常可由多個實體運算子實作。Usually, a logical operation can be implemented by multiple physical operators. 不過,在極少數的情況下,實體運算子也可以實作多個邏輯運算子。However, in rare cases, a physical operator can implement multiple logical operations as well.

運算子描述Operator Descriptions

本節包含邏輯與實體運算子的說明:This section contains descriptions of the logical and physical operators.

圖形執行計畫圖示Graphical Execution Plan Icon Showplan 運算子Showplan Operator DescriptionDescription
自適性聯結運算子圖示Adaptive Join operator icon 自適性聯結Adaptive Join 自適性聯結運算子可讓選擇的雜湊聯結或巢狀迴圈聯結方法,延後到已掃描的第一個輸入之後。The Adaptive Join operator enables the choice of a hash join or nested loops join method to be deferred until the after the first input has been scanned. 自適性聯結運算子是實體運算子。The Adaptive Join operator is a physical operator. 如需詳細資訊,請參閱了解自適性聯結For more information, see Understanding Adaptive joins.
NoneNone AggregateAggregate Aggregate 運算子會計算包含 MIN、MAX、SUM、COUNT 或 AVG 的運算式。The Aggregate operator calculates an expression containing MIN, MAX, SUM, COUNT or AVG. Aggregate 運算子可以是邏輯運算子或實體運算子。The Aggregate operator can be a logical operator or a physical operator.
算術運算式運算子圖示Arithmetic expression operator icon 算術運算式Arithmetic Expression 「算術運算式」 運算子會從資料列中現有的值計算出新的值。The Arithmetic Expression operator computes a new value from existing values in a row. 「算術運算式」 無法用於 SQL ServerSQL Server 中。Arithmetic Expression is not used in SQL ServerSQL Server.
NoneNone Async ConcatAsync Concat Async Concat 運算子只能使用於遠端查詢 (分散式查詢)。The Async Concat operator is used only in remote queries (distributed queries). 它有 n 個子節點和一個父節點。It has n children and one parent node. 一般來說,某些子節點是參與分散式查詢的遠端電腦。Usually, some of the children are remote computers that participate in a distributed query. Async Concat 會同時向所有子節點發出 open() 呼叫,然後再將點陣圖套用到每個子節點。Async Concat issues open() calls to all of the children simultaneously and then applies a bitmap to each child. Async Concat 會針對每一個是 1 的位元,視需要將輸出資料列傳送給父節點。For each bit that is a 1, Async Concat sends the output rows to the parent node on demand.
判斷提示運算子圖示Assert operator icon 判斷提示Assert 「判斷提示」 運算子會驗證條件。The Assert operator verifies a condition. 例如,它會驗證參考完整性,或確定純量子查詢傳回一個資料列。For example, it validates referential integrity or ensures that a scalar subquery returns one row. 「判斷提示」 運算子會針對每個輸入資料列來評估執行計畫之 Argument 資料行中的運算式。For each input row, the Assert operator evaluates the expression in the Argument column of the execution plan. 如果這個運算式評估為 NULL,代表資料列通過「判斷提示」 運算子的驗證,則查詢會繼續執行。If this expression evaluates to NULL, the row is passed through the Assert operator and the query execution continues. 如果這個運算式得出非 Null 值,就會得出相對的錯誤。If this expression evaluates to a nonnull value, the appropriate error will be raised. 「判斷提示」 運算子是實體運算子。The Assert operator is a physical operator.
指派語言項目圖示Assign language element icon 指派Assign 「指派」 運算子會將運算式的值或常數指派給變數。The Assign operator assigns the value of an expression or a constant to a variable. 「指派」 是語言元素。Assign is a language element.
點陣圖運算子圖示Bitmap operator icon 點陣圖建立Bitmap Create 「點陣圖建立」 運算子會出現在建立點陣圖的 Showplan 輸出中。The Bitmap Create operator appears in the Showplan output where bitmaps are built. 點陣圖建立 是邏輯運算子。Bitmap Create is a logical operator.
點陣圖運算子圖示Bitmap operator icon 點陣圖Bitmap SQL ServerSQL Server 會使用「點陣圖」 運算子來實作平行查詢計畫中的點陣圖篩選。uses the Bitmap operator to implement bitmap filtering in parallel query plans. 點陣圖篩選可先透過消除其索引鍵值無法產生任何聯結記錄的資料列來加速執行查詢,然後再透過另一個運算子 (如「平行處理原則」 運算子) 傳遞資料列。Bitmap filtering speeds up query execution by eliminating rows with key values that cannot produce any join records before passing rows through another operator such as the Parallelism operator. 點陣圖篩選會於運算子樹狀目錄的一部分,以精簡方式顯示資料表中的一組值,以便從此樹狀目錄的另一個部分篩選第二個資料表中的資料列。A bitmap filter uses a compact representation of a set of values from a table in one part of the operator tree to filter rows from a second table in another part of the tree. 藉由盡早移除查詢中的不必要資料列,後續的運算子需要處理的資料列就會更少,而查詢的整體效能也會提升。By removing unnecessary rows early in the query, subsequent operators have fewer rows to work with, and the overall performance of the query improves. 最佳化工具會判斷點陣圖何時具有足夠的選擇性能夠充分運用以及將篩選套用到哪個運算子。The optimizer determines when a bitmap is selective enough to be useful and in which operators to apply the filter. 「點陣圖」 是實體運算子。Bitmap is a physical operator.
書籤查閱運算子圖示Bookmark lookup operator icon 書籤查閱Bookmark Lookup 「書籤查閱」 運算子使用書籤 (資料列識別碼或叢集索引鍵) 在資料表或叢集索引中查詢對應的資料列。The Bookmark Lookup operator uses a bookmark (row ID or clustering key) to look up the corresponding row in the table or clustered index. Argument 資料行中包含用來在資料表或叢集索引中查詢資料列的書籤標記。The Argument column contains the bookmark label used to look up the row in the table or clustered index. Argument 資料行中也包含查詢資料列的資料表或叢集索引的名稱。The Argument column also contains the name of the table or clustered index in which the row is looked up. 如果 Argument 資料行中出現 WITH PREFETCH 子句,表示查詢處理器已決定在資料表或叢集索引中查詢書籤時,使用非同步預先提取 (預先讀取) 是最佳方法。If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the table or clustered index.

SQL Server 2005 (9.x)SQL Server 2005 (9.x) 開始,不會使用書籤查閱Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x), Bookmark Lookup is not used. 不過,[索引鍵查閱] 和 [RID 查閱] 會提供書籤查閱功能。Instead, Key Lookup and RID Lookup provide bookmark lookup functionality.
NoneNone 分支重新分割Branch Repartition 在平行查詢計畫中,有時候會有 Iterator 的概念區。In a parallel query plan, sometimes there are conceptual regions of iterators. 在這種區域內的所有 Iterator,都可以由平行執行緒來執行。All of the iterators within such a region can be executed by parallel threads. 區域本身必須連續執行。The regions themselves must be executed serially. 個別區域內的一些「平行處理原則」 Iterator,稱作「分支重新分割」 。Some of the Parallelism iterators within an individual region are called Branch Repartition. 在兩個這種區域的界限上的「平行處理原則」 Iterator,稱作「區段重新分割」 。The Parallelism iterator at the boundary of two such regions is called Segment Repartition. 「分支重新分割」 和「區段重新分割」 都是邏輯運算子。Branch Repartition and Segment Repartition are logical operators.
NoneNone 廣播Broadcast 「廣播」 有一個子節點和 n 個父節點。Broadcast has one child node and n parent nodes. 「廣播」 會依要求將其輸入資料列傳送至多位取用者。Broadcast sends its input rows to multiple consumers on demand. 每位取用者都會收到所有資料列。Each consumer gets all of the rows. 例如,若所有取用者都是雜湊聯結的建立者,則會建立 n 份雜湊資料表。For example, if all of the consumers are build sides of a hash join, then n copies of the hash tables will be built.
建立雜湊運算子圖示Build hash operator icon 建立雜湊Build Hash 指示建立 xVelocity 記憶體最佳化的資料行存放區索引之批次雜湊資料表。Indicates the build of a batch hash table for an xVelocity memory optimized columnstore index.
NoneNone CacheCache 「快取」 是特殊版的「多工緩衝處理」 運算子。Cache is a specialized version of the Spool operator. 它只儲存一列資料。It stores only one row of data. 「快取」 是邏輯運算子。Cache is a logical operator. 「快取」 無法用於 SQL ServerSQL Server 中。Cache is not used in SQL ServerSQL Server.
叢集索引刪除運算子圖示Clustered index delete operator icon 叢集索引刪除Clustered Index Delete 「叢集索引刪除」 運算子會從查詢執行計畫之 Argument 資料行所指定的叢集索引中刪除資料列。The Clustered Index Delete operator deletes rows from the clustered index specified in the Argument column of the query execution plan. 如果 Argument 資料行中出現 WHERE:() 述詞,就只會刪除滿足述詞的資料列。「叢集索引刪除」 是實體運算子。If a WHERE:() predicate is present in the Argument column, then only those rows that satisfy the predicate are deleted.Clustered Index Delete is a physical operator.
叢集索引插入運算子圖示Clustered index insert operator icon 叢集索引插入Clustered Index Insert 「叢集索引插入」 執行程序表運算子會將其輸入的資料列插入 Argument 資料行所指定的叢集索引中。The Clustered Index Insert Showplan operator inserts rows from its input into the clustered index specified in the Argument column. Argument 資料行也包含 SET:() 述詞,指出每一個資料行設定的值。The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. 如果「叢集索引插入」 沒有插入值的子系,則會從「插入」 運算子本身取得插入的資料列。「叢集索引插入」 是實體運算子。If Clustered Index Insert has no children for insert values, the row inserted is taken from the Insert operator itself.Clustered Index Insert is a physical operator.
叢集索引合併運算子Clustered index merge operator 叢集索引合併Clustered Index Merge 「叢集索引合併」 運算子會將合併資料流套用到叢集索引。The Clustered Index Merge operator applies a merge data stream to a clustered index. 此運算子會從運算子之 Argument 資料行內所指定的叢集索引中刪除、更新或插入資料列。The operator deletes, updates, or inserts rows from the clustered index specified in the Argument column of the operator. 所執行的實際作業取決於運算子之 Argument 資料行內指定之 ACTION 資料行的執行階段值。The actual operation performed depends on the runtime value of the ACTION column specified in the Argument column of the operator. 「叢集索引合併」 是實體運算子。Clustered Index Merge is a physical operator.
叢集索引掃描運算子圖示Clustered index scan operator icon 叢集索引掃描Clustered Index Scan 「叢集索引掃描」 運算子會掃描查詢執行計畫的 Argument 資料行中指定的叢集索引。The Clustered Index Scan operator scans the clustered index specified in the Argument column of the query execution plan. 出現選擇性的 WHERE:() 述詞時,只會傳回滿足述詞的資料列。When an optional WHERE:() predicate is present, only those rows that satisfy the predicate are returned. 如果 Argument 資料行中包含 ORDERED 子句,表示查詢處理器要求資料列的輸出須按叢集索引的排序次序傳回。If the Argument column contains the ORDERED clause, the query processor has requested that the output of the rows be returned in the order in which the clustered index has sorted it. 如果沒有 ORDERED 子句,儲存引擎會以最佳方式搜尋索引,而不需要排序輸出。If the ORDERED clause is not present, the storage engine scans the index in the optimal way, without necessarily sorting the output. 「叢集索引掃描」 是邏輯與實體運算子。Clustered Index Scan is a logical and physical operator.
叢集索引搜尋運算子圖示Clustered index seek operator icon 叢集索引搜尋Clustered Index Seek 「叢集索引搜尋」 運算子使用索引的搜尋能力,從叢集索引中擷取資料列。The Clustered Index Seek operator uses the seeking ability of indexes to retrieve rows from a clustered index. Argument 資料行包含所使用的叢集索引名稱,及 SEEK:() 述詞。The Argument column contains the name of the clustered index being used and the SEEK:() predicate. 儲存引擎會使用索引來處理滿足這個 SEEK:() 述詞的資料列。The storage engine uses the index to process only those rows that satisfy this SEEK:() predicate. 也可以包含 WHERE:() 述詞,讓儲存引擎針對滿足 SEEK:() 述詞的所有資料列進行評估,但此為選擇性,且不使用索引來完成此程序。It can also include a WHERE:() predicate where the storage engine evaluates against all rows that satisfy the SEEK:() predicate, but this is optional and does not use indexes to complete this process.

如果 Argument 資料行包含 ORDERED 子句,表示查詢處理器已決定,資料列的傳回順序必須依叢集索引的排序次序。If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the clustered index has sorted them. 如果沒有 ORDERED 子句,儲存引擎會以最佳方式搜尋索引,不需要將輸出排序。If the ORDERED clause is not present, the storage engine searches the index in the optimal way, without necessarily sorting the output. 讓輸出維持次序會比產生不按次序的輸出更沒效率。Allowing the output to retain its ordering can be less efficient than producing nonsorted output. 出現關鍵字 LOOKUP 時,表示正在執行書籤查閱。When the keyword LOOKUP appears, then a bookmark lookup is being performed. SQL Server 2008SQL Server 2008 和更新版本中,「索引鍵查閱」 運算子會提供書籤查閱功能。In SQL Server 2008SQL Server 2008 and later versions, the Key Lookup operator provides bookmark lookup functionality. 「叢集索引搜尋」 是邏輯與實體運算子。Clustered Index Seek is a logical and physical operator.
叢集索引更新運算子圖示Clustered index update operator icon 叢集索引更新Clustered Index Update 「叢集索引更新」 運算子會更新 Argument 資料行中所指定之叢集索引內的輸入資料列。如果出現 WHERE:() 述詞,就只會更新滿足這個述詞的資料列。The Clustered Index Update operator updates input rows in the clustered index specified in the Argument column.If a WHERE:() predicate is present, only those rows that satisfy this predicate are updated. 如果出現 SET:() 述詞,則每個更新的資料行都會設為這個值。If a SET:() predicate is present, each updated column is set to this value. 如果出現 DEFINE:() 述詞,就會列出這個運算子定義的數值。If a DEFINE:() predicate is present, the values that this operator defines are listed. 在 SET 子句中或這個運算子中以及這個查詢中的其他位置,都可以參考這些數值。These values may be referenced in the SET clause or elsewhere within this operator and elsewhere within this query. 「叢集索引更新」 是邏輯與實體運算子。Clustered Index Update is a logical and physical operator.
摺疊運算子圖示Collapse operator icon 摺疊Collapse 「摺疊」 運算子可最佳化更新處理。The Collapse operator optimizes update processing. 執行更新時,它可以分割成 (使用「分割」 運算子) 刪除與插入。When an update is performed, it can be split (using the Split operator) into a delete and an insert. Argument 資料行包含指定索引鍵資料行清單的 GROUP BY:() 子句。The Argument column contains a GROUP BY:() clause that specifies a list of key columns. 如果查詢處理器發現了刪除及插入相同索引鍵值的相鄰資料列,會以更有效率的單一更新作業來取代這些不同的作業。If the query processor encounters adjacent rows that delete and insert the same key values, it replaces these separate operations with a single more efficient update operation. 「摺疊」 是邏輯與實體運算子。Collapse is a logical and physical operator.
資料行存放區索引掃描Columnstore Index Scan 資料行存放區索引掃描Columnstore Index Scan 「資料行存放區索引掃描」 運算子會掃描查詢執行計畫之 Argument 資料行中所指定的資料行存放區索引。The Columnstore Index Scan operator scans the columnstore index specified in the Argument column of the query execution plan.
計算純量運算子圖示Compute scalar operator icon Compute ScalarCompute Scalar 「計算純量」 運算子會評估運算式,以產生計算的純量值。The Compute Scalar operator evaluates an expression to produce a computed scalar value. 然後可能會將此值傳回給使用者,或由查詢的其他地方來參考,或兩者皆是。This may then be returned to the user, referenced elsewhere in the query, or both. 例如在篩選述詞或聯結述詞中,就會見到這兩種情況。An example of both is in a filter predicate or join predicate. 「計算純量」 是邏輯與實體運算子。Compute Scalar is a logical and physical operator.

執行程序表中出現的「計算純量」 運算子可能不會包含 RunTimeInformation 元素。Compute Scalar operators that appear in Showplans generated by SET STATISTICS XML might not contain the RunTimeInformation element. 在圖形化的執行程序表中,當選取 SQL Server Management StudioSQL Server Management Studio 中的 [包括實際執行計畫] 選項時,[實際資料列] 、[實際重新繫結] 與 [實際倒轉] 可能不會顯示在 [屬性] 視窗中。In graphical Showplans, Actual Rows, Actual Rebinds, and Actual Rewinds might be absent from the Properties window when the Include Actual Execution Plan option is selected in SQL Server Management StudioSQL Server Management Studio. 發生此情況時,表示這些運算子雖然用於編譯的執行計畫中,它們的作用是由即時查詢計畫中的其他運算子執行。When this occurs, it means that although these operators were used in the compiled query plan, their work was performed by other operators in the run-time query plan. 同時也請注意,由 SET STATISTICS PROFILE 產生的「執行程序表」輸出中的執行數目,等於由 SET STATISTICS XML 產生的「執行程序表」中重新繫結和倒轉的總和。Also note that the number of executes in Showplan output generated by SET STATISTICS PROFILE is equivalent to the sum of rebinds and rewinds in Showplans generated by SET STATISTICS XML.
串連運算子圖示Concatenation operator icon 串連Concatenation 「串連」 運算子會掃描多個輸入,並傳回每一個掃描的資料列。The Concatenation operator scans multiple inputs, returning each row scanned. 「串連」 通常用來實作 Transact-SQLTransact-SQL UNION ALL 建構。Concatenation is typically used to implement the Transact-SQLTransact-SQL UNION ALL construct. 「串連」 實體運算子有兩個以上的輸入和一個輸出。The Concatenation physical operator has two or more inputs and one output. 串連作業會將資料列從第一個輸入資料流複製到輸出資料流,再對其他每一個輸入資料流重複此作業。Concatenation copies rows from the first input stream to the output stream, then repeats this operation for each additional input stream. 「串連」 是邏輯與實體運算子。Concatenation is a logical and physical operator.
固定掃描運算子圖示Constant scan operator icon 固定掃描Constant Scan 「固定掃描」 運算子會在查詢中加入固定的一列或多列。The Constant Scan operator introduces one or more constant rows into a query. 「計算純量」 運算子通常用於「固定掃描」 之後,可以將資料行加入由「固定掃描」 運算子所產生的資料列。A Compute Scalar operator is often used after a Constant Scan to add columns to a row produced by the Constant Scan operator.
轉換 (資料庫引擎) 語言項目圖示Convert (Database Engine) language element icon 轉換Convert 「轉換」 運算子可將某個純量資料類型轉換為另一個資料類型。The Convert operator converts one scalar data type to another. 「轉換」 是語言元素。Convert is a language element.
NoneNone 交叉聯結Cross Join 「交叉聯結」 運算子會將第一個 (頂端) 輸入的每一列與第二個 (底部) 輸入的每一列相聯結。The Cross Join operator joins each row from the first (top) input with each row from the second (bottom) input. 交叉聯結 是邏輯運算子。Cross Join is a logical operator.
NoneNone 資料指標Cursor 「資料指標」 邏輯與實體運算子可用來說明與資料指標作業有關的查詢或更新將如何執行。The Cursor logical and physical operators are used to describe how a query or update involving cursor operations is executed. 實體運算子是說明用來處理資料指標的實體實作演算法,例如使用索引鍵集衍生資料指標。The physical operators describe the physical implementation algorithm used to process the cursor; for example, using a keyset-driven cursor. 資料指標執行的每個步驟都有一個實體運算子。Each step in the execution of a cursor involves a physical operator. 邏輯運算子會說明資料指標的屬性,如資料指標是唯讀的。The logical operators describe a property of the cursor, such as the cursor is read only.

邏輯運算子包括非同步、開放式、主要、唯讀、捲動鎖定及次要與同步。Logical operators include Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, and Secondary and Synchronous.

實體運算子包括動態、提取查詢、索引鍵集、母體擴展查詢、重新整理查詢與快照集。Physical operators include Dynamic, Fetch Query, Keyset, Population Query, Refresh Query and Snapshot.
資料指標 catchall 資料指標運算子圖示Cursor catchall cursor operator icon 雜物箱catchall 產生圖形執行程序表的邏輯若找不到適當的 Iterator 圖示,就會顯示 [雜物箱] 圖示。The catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical showplans. [雜物箱] 圖示不一定會指出錯誤條件。The catchall icon does not necessarily indicate an error condition. [雜物箱] 圖示有三種:藍色 (Iterator)、橙色 (資料指標) 與綠色 ( Transact-SQLTransact-SQL 語言項目)。There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language elements).
宣告語言項目圖示Declare language element icon 宣告Declare 宣告運算子會在查詢計畫中配置區域變數。The Declare operator allocates a local variable in the query plan. 「宣告」 是語言元素。Declare is a language element.
刪除 (資料庫引擎) 運算子圖示Delete (Database Engine) operator icon 刪除Delete 會從滿足 Argument 資料行之選擇性述詞的物件資料列,刪除「刪除」 運算子。The Delete operator deletes from an object rows that satisfy the optional predicate in the Argument column.
刪除掃描運算子圖示Delete scan operator icon 刪除的掃描Deleted Scan 「刪除的掃描」 運算子會掃描觸發程序中已刪除的資料表。The Deleted Scan operator scans the deleted table within a trigger.
NoneNone 相異排序Distinct Sort 「相異排序」 邏輯運算子會掃描輸入,移除重複項,並依 Argument 資料行中 DISTINCT ORDER BY:() 述詞所指定的資料行排序。The Distinct Sort logical operator scans the input, removing duplicates and sorting by the columns specified in the DISTINCT ORDER BY:() predicate of the Argument column. 相異排序 是邏輯運算子。Distinct Sort is a logical operator.
NoneNone DistinctDistinct 「相異」 運算子可從資料列集或從值集合移除重複的項目。The Distinct operator removes duplicates from a rowset or from a collection of values. 「相異」 是邏輯運算子。Distinct is a logical operator.
散發資料流平行處理原則運算子圖示Distribute streams parallelism operator icon 散發資料流Distribute Streams 「散發資料流」 運算子只用於平行查詢計畫。The Distribute Streams operator is used only in parallel query plans. 「散發資料流」 運算子會採用記錄的單一輸入資料流,並產生多個輸出資料流。The Distribute Streams operator takes a single input stream of records and produces multiple output streams. 記錄內容與格式不會變更。The record contents and format are not changed. 輸入資料流中的每筆資料錄都會出現在一個輸出資料流中。Each record from the input stream appears in one of the output streams. 這個運算子會自動在輸出資料流中保留輸入資料錄的關聯次序。This operator automatically preserves the relative order of the input records in the output streams. 通常是利用雜湊方式來決定特定輸入資料錄應屬於哪個輸出資料流。Usually, hashing is used to decide to which output stream a particular input record belongs.

如果輸出經過分割的話,Argument 資料行中會包含 PARTITION COLUMNS:() 述詞與分割資料行。If the output is partitioned, then the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns. 「散發資料流」 是邏輯運算子。Distribute Streams is a logical operator
動態資料指標運算子圖示Dynamic cursor operator icon 動態Dynamic 「動態」 運算子採用的資料指標,可以看到其他人進行的所有變更。The Dynamic operator uses a cursor that can see all changes made by others.
提取查詢資料指標運算子圖示Fetch query cursor operator icon 提取查詢Fetch Query 「提取查詢」 運算子會在對資料指標發出提取時擷取資料列。The Fetch Query operator retrieves rows when a fetch is issued against a cursor.
篩選 (資料庫引擎) 運算子圖示Filter (Database Engine) operator icon 篩選Filter 「篩選」 運算子會掃描輸入,只傳回滿足 Argument 資料行中篩選運算式 (述詞) 的資料列。The Filter operator scans the input, returning only those rows that satisfy the filter expression (predicate) that appears in the Argument column.
NoneNone 流程相異Flow Distinct 「流程相異」 邏輯運算子會掃描輸入,移除重複的項目。The Flow Distinct logical operator scans the input, removing duplicates. 「相異」 運算子會在產生任何輸出之前就先取用所有輸入,「流程相異」 運算子則會每取得一個輸入資料列就傳回一列 (除非該資料列重複,若遇到這種情況,則會將其捨棄)。Whereas the Distinct operator consumes all input before producing any output, the FlowDistinct operator returns each row as it is obtained from the input (unless that row is a duplicate, in which case it is discarded).
外部索引鍵參考檢查運算子圖示Foreign key references check operator icon 外部索引鍵參考檢查Foreign Key References Check 外部索引鍵參考檢查運算子會就地執行參考完整性檢查,藉由比較已修改之資料列與參考資料表的資料列,驗證所做的修改不會破壞參考完整性。The Foreign Key References Check operator performs referential integrity checks in place, by comparing the modified row to the rows in the referencing tables to verify that the modification will not break the referential integrity. 當相同的主要或唯一索引鍵有超過 253 個外部索引鍵參考時,就會使用外部索引鍵參考檢查運算子。The Foreign Key References Check operator is used when more than 253 foreign key references exist on the same primary or unique key. 外部索引鍵參考檢查是邏輯與實體運算子。Foreign Key References Check is a logical and physical operator.
NoneNone 完整外部聯結Full Outer Join 「完整外部聯結」 邏輯運算子所傳回的每個資料列,皆滿足第一個 (上方) 輸入的聯結述詞與第二個 (下方) 輸入的每一個資料列相聯結。The Full Outer Join logical operator returns each row satisfying the join predicate from the first (top) input joined with each row from the second (bottom) input. 它也會傳回以下資料列:It also returns rows from:

- 第一個輸入中與第二個輸入完全不符合者。-The first input that had no matches in the second input.

- 第二個輸入中與第一個輸入完全不符合者。-The second input that had no matches in the first input.

不包含相符值的輸入會以 Null 值傳回。The input that does not contain the matching values is returned as a null value. 完整外部聯結 是邏輯運算子。Full Outer Join is a logical operator.
蒐集資料流平行處理原則運算子圖示Gather streams parallelism operator icon 蒐集資料流Gather Streams 「蒐集資料流」 運算子僅用於平行查詢計畫中。The Gather Streams operator is only used in parallel query plans. 「蒐集資料流」 運算子會耗用數個輸入資料流,並將輸入資料流合併而產生記錄的單一輸出資料流。The Gather Streams operator consumes several input streams and produces a single output stream of records by combining the input streams. 記錄內容與格式不會變更。The record contents and format are not changed. 若此運算子要保留順序,那麼所有輸入資料流都必須排序好。If this operator is order preserving, all input streams must be ordered. 若輸出經過排序,則 Argument 資料行中會包含 ORDER BY:() 述詞,以及要排序的資料行名稱。If the output is ordered, the Argument column contains an ORDER BY:() predicate and the names of columns being ordered. 蒐集資料流 是邏輯運算子。Gather Streams is a logical operator.
雜湊比對運算子圖示Hash match operator icon 雜湊比對Hash Match 「雜湊比對」 運算子會根據其建立的輸入,為每一資料列計算雜湊值,以建立雜湊資料表。The Hash Match operator builds a hash table by computing a hash value for each row from its build input. Argument 資料行會出現 HASH:() 述詞,以及用來建立雜湊值的資料行清單。A HASH:() predicate with a list of columns used to create a hash value appears in the Argument column. 然後它會為每個探查列 (視情況) 建立雜湊值 (使用相同的雜湊函數),並在雜湊資料表中尋找符合者。Then, for each probe row (as applicable), it computes a hash value (using the same hash function) and looks in the hash table for matches. 如果出現殘餘述詞 (由 Argument 資料行中的 RESIDUAL:() 識別),那麼也必須滿足該述詞,這樣該資料列才算符合。If a residual predicate is present (identified by RESIDUAL:() in the Argument column), that predicate must also be satisfied for rows to be considered a match. 行為取決於正在執行的邏輯作業:Behavior depends on the logical operation being performed:

- 若為任何聯結,則使用第一個 (頂端) 輸入來建立雜湊資料表,使用第二個 (底端) 輸入來探查雜湊資料表。-For any joins, use the first (top) input to build the hash table and the second (bottom) input to probe the hash table. 輸出相符 (或不符合) 由聯結類型規定。Output matches (or nonmatches) as dictated by the join type. 如果多個聯結使用相同的聯結行,這些作業會組成一組成為雜湊群。If multiple joins use the same join column, these operations are grouped into a hash team.

- 若為相異運算子或彙總運算子,則使用輸入來建立雜湊資料表 (移除重複項,並計算任何彙總運算式)。-For the distinct or aggregate operators, use the input to build the hash table (removing duplicates and computing any aggregate expressions). 建立雜湊資料表時,會掃描資料表並輸出所有項目。When the hash table is built, scan the table and output all entries.

- 若為等位運算子,則使用第一個輸入來建立雜湊資料表 (移除重複項)。-For the union operator, use the first input to build the hash table (removing duplicates). 使用第二個輸入 (必須沒有重複項) 探查雜湊資料表,傳回不符合的所有資料列,然後掃描雜湊資料表,並傳回所有項目。Use the second input (which must have no duplicates) to probe the hash table, returning all rows that have no matches, then scan the hash table and return all entries.
「點陣圖」 是實體運算子。Hash Match is a physical operator. 如需詳細資訊,請參閱了解雜湊聯結For more information, see Understanding Hash joins.
如果語言項目圖示If language element icon 如果If 「如果」 運算子會依據運算式執行條件式處理。The If operator carries out conditional processing based on an expression. 「如果」 是語言元素。If is a language element.
NoneNone 內部聯結Inner Join 「內部聯結」 邏輯運算子所傳回的每個資料列,皆滿足第一個 (上方) 輸入與第二個 (下方) 輸入的聯結。The Inner Join logical operator returns each row that satisfies the join of the first (top) input with the second (bottom) input.
插入 (資料庫引擎) 運算子圖示Insert (Database Engine) operator icon InsertInsert 「插入」 邏輯運算子會將輸入的每一個資料列,插入 Argument 資料行中指定的物件。The Insert logical operator inserts each row from its input into the object specified in the Argument column. 實體運算子是「資料表插入」 、「索引插入」 或「叢集索引插入」 運算子。The physical operator is either the Table Insert, Index Insert, or Clustered Index Insert operator.
插入的掃描運算子圖示Inserted scan operator icon 插入的掃描Inserted Scan 「插入的掃描」 運算子會掃描 inserted 資料表。The Inserted Scan operator scans the inserted table. 「插入的掃描」 是邏輯與實體運算子。Inserted Scan is a logical and physical operator.
內建語言項目圖示Intrinsic language element icon 內建Intrinsic 「內建」 運算子會叫用內部 Transact-SQLTransact-SQL 函數。The Intrinsic operator invokes an internal Transact-SQLTransact-SQL function. 「內建」 是語言元素。Intrinsic is a language element.
迭代器 catchall 運算子圖示Iterator catchall operator icon IteratorIterator 產生圖形執行程序表的邏輯若找不到適當的 Iterator 圖示,就會顯示 Iterator 雜物箱圖示。The Iterator catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. [雜物箱] 圖示不一定會指出錯誤條件。The catchall icon does not necessarily indicate an error condition. [雜物箱] 圖示有三種:藍色 (Iterator)、橙色 (資料指標) 與綠色 ( Transact-SQLTransact-SQL 語言建構)。There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
書籤查閱運算子圖示Bookmark lookup operator icon 索引鍵查閱Key Lookup 「索引鍵查閱」 運算子可在包含叢集索引的資料行上進行書籤查閱。The Key Lookup operator is a bookmark lookup on a table with a clustered index. Argument 資料行包含叢集索引的名稱和叢集索引鍵,可用來查閱叢集索引中的資料列。The Argument column contains the name of the clustered index and the clustering key used to look up the row in the clustered index. 「索引鍵查閱」 一律都會伴隨「巢狀迴圈」 運算子。Key Lookup is always accompanied by a Nested Loops operator. 如果 Argument 資料行中出現 WITH PREFETCH 子句,表示查詢處理器已決定在叢集索引中查詢書籤時,使用非同步預先提取 (預先讀取) 是最佳方法。If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the clustered index.

在查詢計畫中使用「索引鍵查閱」 運算子,表示查詢可以進行效能微調。The use of a Key Lookup operator in a query plan indicates that the query might benefit from performance tuning. 例如,您可以加入涵蓋索引來提高查詢效能。For example, query performance might be improved by adding a covering index.
索引鍵集資料指標運算子圖示Keyset cursor operator icon 索引鍵集Keyset 「索引鍵集」 運算子使用可以查看更新,但無法插入其他人所製作的資料指標。The Keyset operator uses a cursor that can see updates, but not inserts made by others.
語言項目 catchall 圖示Language element catchall icon Language 元素Language Element 「執行程序表」輸出中顯示的 Language 元素 雜物箱圖示。The Language Element catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. [雜物箱] 圖示不一定會指出錯誤條件。The catchall icon does not necessarily indicate an error condition. [雜物箱] 圖示有三種:藍色 (Iterator)、橙色 (資料指標) 與綠色 ( Transact-SQLTransact-SQL 語言建構)。There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
NoneNone 左方反半聯結Left Anti Semi Join 當第二個 (下方) 輸入中沒有相符的資料列時,「左方反半聯結」 運算子將會從第一個 (上方) 輸入傳回每一個資料列。The Left Anti Semi Join operator returns each row from the first (top) input when there is no matching row in the second (bottom) input. 如果 Argument 資料行中沒有聯結述詞,則每一資料列就是一個符合資料列。If no join predicate exists in the Argument column, each row is a matching row. 左方反半聯結 是邏輯運算子。Left Anti Semi Join is a logical operator.
NoneNone 左外部聯結Left Outer Join 「左外部聯結」 邏輯運算子所傳回的每個資料列,皆滿足第一個 (上方) 輸入與第二個 (下方) 輸入的聯結。The Left Outer Join operator returns each row that satisfies the join of the first (top) input with the second (bottom) input. 它也會傳回第一個輸入中與第二個輸入完全不相符的任何資料列。It also returns any rows from the first input that had no matching rows in the second input. 第二個輸入中的不符合資料列會以 null 值傳回。The nonmatching rows in the second input are returned as null values. 如果 Argument 資料行中沒有聯結述詞,則每一資料列就是一個符合資料列。If no join predicate exists in the Argument column, each row is a matching row. 左外部聯結 是邏輯運算子。Left Outer Join is a logical operator.
NoneNone 左方半聯結Left Semi Join 當第二個 (下方) 輸入中有相符的資料列時,「左方半聯結」 運算子將會從第一個 (上方) 輸入傳回每一個資料列。The Left Semi Join operator returns each row from the first (top) input when there is a matching row in the second (bottom) input. 如果 Argument 資料行中沒有聯結述詞,則每一資料列就是一個符合資料列。If no join predicate exists in the Argument column, each row is a matching row. 左方半聯結 是邏輯運算子。Left Semi Join is a logical operator.
記錄檔資料列掃描運算子圖示Log row scan operator icon 記錄檔資料列掃描Log Row Scan 「記錄檔資料列掃描」 運算子會掃描交易記錄。The Log Row Scan operator scans the transaction log. 「記錄檔資料列掃描」 是邏輯與實體運算子。Log Row Scan is a logical and physical operator.
合併間隔運算子圖示Merge interval operator icon 合併間隔Merge Interval 「合併間隔」 運算子會合併多個 (可能重疊) 間隔以產生最小的非重疊間隔,然後使用這些間隔,尋找索引項目。The Merge Interval operator merges multiple (potentially overlapping) intervals to produce minimal, nonoverlapping intervals that are then used to seek index entries. 這個運算子一般會出現在一或多個「計算純量」 運算子上方,重疊在「固定掃描」 運算子之上,後者會建構這個運算子所合併的間隔 (以資料列中的資料行代表)。This operator typically appears above one or more Compute Scalar operators over Constant Scan operators, which construct the intervals (represented as columns in a row) that this operator merges. 「合併間隔」 是邏輯與實體運算子。Merge Interval is a logical and physical operator.
合併聯結運算子圖示Merge join operator icon 合併聯結Merge Join 「合併聯結」 運算子會執行內部聯結、左方外部聯結、左方半聯結、左方反半聯結、右方外部聯結、右方半聯結、右方反半聯結,以及等位邏輯作業。The Merge Join operator performs the inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join, and union logical operations.

Argument 資料行中,若要執行一對多的聯結運算,「合併聯結」 運算子就要包含 MERGE:() 述詞,若要執行多對多的聯結運算,則要包含 MANY-TO-MANY MERGE:() 述詞。In the Argument column, the Merge Join operator contains a MERGE:() predicate if the operation is performing a one-to-many join, or a MANY-TO-MANY MERGE:() predicate if the operation is performing a many-to-many join. Argument 資料行也包含用來執行運算的逗點分隔資料行清單。The Argument column also includes a comma-separated list of columns used to perform the operation. 「合併聯結」 運算子需要兩個輸入,依個別資料行排序,可能是利用在查詢計畫中明確地插入排序作業。The Merge Join operator requires two inputs sorted on their respective columns, possibly by inserting explicit sort operations into the query plan. 如果不需要明確的排序,合併聯結會特別有效;例如,如果資料庫中有合適的 B 型樹狀目錄索引,或如果排序次序可以由多個作業利用 (如合併聯結與含積存的分組功能)。Merge join is particularly effective if explicit sorting is not required, for example, if there is a suitable B-tree index in the database or if the sort order can be exploited for multiple operations, such as a merge join and grouping with roll up. 「合併聯結」 是實體運算子。Merge Join is a physical operator. 如需詳細資訊,請參閱了解合併聯結For more information, see Understanding Merge joins.
巢狀迴圈運算子圖示Nested loops operator icon 巢狀迴圈Nested Loops 「巢狀迴圈」 運算子執行內部聯結、左方外部聯結、左方半聯結和左方反半聯結邏輯運算。The Nested Loops operator performs the inner join, left outer join, left semi join, and left anti semi join logical operations. 巢狀迴圈聯結通常會使用索引,在內部資料表中搜尋外部資料表的每個資料列。Nested loops joins perform a search on the inner table for each row of the outer table, typically using an index. 查詢處理器會根據預期的成本,決定是否要排序外部輸入,以改進對內部輸入的索引搜尋位置。The query processor decides, based on anticipated costs, whether to sort the outer input in order to improve locality of the searches on the index over the inner input. 任何滿足 Argument 資料行中的選擇性述詞的資料列,會根據所執行的邏輯運算而適當地傳回。Any rows that satisfy the (optional) predicate in the Argument column are returned as applicable, based on the logical operation being performed. 當最佳化的屬性設定為 True 時,則表示已使用最佳化的巢狀迴圈 (或批次排序)。When the OPTIMIZED attribute is set to True, it means that an Optimized Nested Loops (or Batch Sort) is used. 「巢狀迴圈」 是實體運算子。Nested Loops is a physical operator. 如需詳細資訊,請參閱了解巢狀迴圈聯結For more information, see Understanding Nested Loops joins.
非叢集索引刪除運算子圖示Nonclustered index delete operator icon 非叢集索引刪除Nonclustered Index Delete 「非叢集索引刪除」 運算子會從 Argument 資料行中指定的非叢集索引刪除輸入資料列。The Nonclustered Index Delete operator deletes input rows from the nonclustered index specified in the Argument column. 「非叢集索引刪除」 是實體運算子。Nonclustered Index Delete is a physical operator.
非叢集索引插入運算子圖示Nonclustered index insert operator icon 索引插入Index Insert 「索引插入」 運算子會將輸入資料列插入 Argument 資料行所指定的非叢集索引中。The Index Insert operator inserts rows from its input into the nonclustered index specified in the Argument column. Argument 資料行也包含 SET:() 述詞,指出每一個資料行設定的值。The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. 「索引插入」 是實體運算子。Index Insert is a physical operator.
非叢集索引掃描運算子圖示Nonclustered index scan operator icon 索引掃描Index Scan 「索引掃描」 運算子會擷取 Argument 資料行中所指定之非叢集索引的所有資料列。The Index Scan operator retrieves all rows from the nonclustered index specified in the Argument column. 如果 Argument 資料行出現選擇性的 WHERE:() 述詞,就只傳回滿足述詞的資料列。If an optional WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. 「索引掃描」 是邏輯與實體運算子。Index Scan is a logical and physical operator.
非叢集索引搜尋運算子圖示Nonclustered index seek operator icon 索引搜尋Index Seek 「索引搜尋」 運算子使用索引的搜尋能力,從非叢集索引中擷取資料列。The Index Seek operator uses the seeking ability of indexes to retrieve rows from a nonclustered index. Argument 資料行中包含所使用的非叢集索引名稱。The Argument column contains the name of the nonclustered index being used. 它也包含 SEEK:() 述詞。It also contains the SEEK:() predicate. 儲存引擎會使用索引來處理滿足 SEEK:() 述詞的資料列。The storage engine uses the index to process only those rows that satisfy the SEEK:() predicate. 它可以選擇包含 WHERE:() 述詞,讓儲存引擎比對所有滿足 SEEK:() 述詞的資料列 (這麼做時不使用索引)。It optionally may include a WHERE:() predicate, which the storage engine will evaluate against all rows that satisfy the SEEK:() predicate (it does not use the indexes to do this). 如果 Argument 資料行必須包含 ORDERED 子句,表示查詢處理器已決定傳回的資料列必須依照非叢集索引的排序次序。If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the nonclustered index has sorted them. 如果沒有 ORDERED 子句,儲存引擎會以最適當的方式搜尋索引 (不保證輸出會依序排列)。If the ORDERED clause is not present, the storage engine searches the index in the optimal way (which does not guarantee that the output will be sorted). 讓輸出維持次序會比產生不按次序的輸出還要沒有效率。Allowing the output to retain its ordering may be less efficient than producing nonsorted output. 「索引搜尋」 是邏輯與實體運算子。Index Seek is a logical and physical operator.
非叢集索引多工緩衝處理運算子圖示Nonclustered index spool operator icon 索引多工緩衝處理Index Spool 「索引多工緩衝處理」 實體運算子在 Argument 資料行中包含 SEEK:() 述詞。The Index Spool physical operator contains a SEEK:() predicate in the Argument column. 「索引多工緩衝處理」 運算子會掃描其輸入資料列,將每一列的副本放入隱藏的多工緩衝處理檔中 (儲存在 tempdb 資料庫中,直到查詢結束就不再存在),並對資料列建立非叢集索引。The Index Spool operator scans its input rows, placing a copy of each row in a hidden spool file (stored in the tempdb database and existing only for the lifetime of the query), and builds a nonclustered index on the rows. 這讓您可以使用索引的搜尋能力來輸出滿足 SEEK:() 述詞的資料列。This allows you to use the seeking capability of indexes to output only those rows that satisfy the SEEK:() predicate. 如果倒轉運算子 (例如,利用「巢狀迴圈」 運算子),但是不需要重新繫結,會使用多工緩衝處理資料,而非重新掃描輸入。If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input.
非叢集索引更新運算子圖示Nonclustered index update operator icon 非叢集索引更新Nonclustered Index Update 「非叢集索引更新」 實體運算子會在 Argument 資料行中指定的非叢集索引內,從它的輸入更新資料列。The Nonclustered Index Update physical operator updates rows from its input in the nonclustered index specified in the Argument column. 如果出現 SET:() 述詞,則每個更新的資料行都會設為這個值。If a SET:() predicate is present, each updated column is set to this value. 「非叢集索引更新」 是實體運算子。Nonclustered Index Update is a physical operator.
線上索引插入運算子圖示Online index insert operator icon 線上索引插入Online Index Insert 「線上索引插入」 實體運算子指出索引之建立、改變或卸除作業將於線上進行。The Online Index Insert physical operator indicates that an index create, alter, or drop operation is performed online. 也就是說,基礎資料表資料在索引操作期間仍然可供使用者使用。That is, the underlying table data remains available to users during the index operation.
NoneNone 平行處理原則Parallelism 平行處理原則運算子 (或 Exchange 迭代器) 會執行散發資料流、收集資料流及重新分割資料流的邏輯作業。The Parallelism operator (or Exchange Iterator) performs the distribute streams, gather streams, and repartition streams logical operations. Argument 資料行可以包含 PARTITION COLUMNS:() 述詞,以及被分割的資料行清單 (以逗點分隔)。The Argument columns can contain a PARTITION COLUMNS:() predicate with a comma-separated list of the columns being partitioned. Argument 資料行也可以包含 ORDER BY:() 述詞,用以列出分割期間要保留排序順序的資料行。The Argument columns can also contain an ORDER BY:() predicate, listing the columns to preserve the sort order for during partitioning. 「平行處理原則」 是實體運算子。Parallelism is a physical operator. 如需平行處理原則運算子的詳細資訊,請參閱 Craig Freedman 的部落格系列For more information about the Parallelism operator, see Craig Freedman's blog series.

注意: 如果查詢已經編譯為平行查詢,但在執行階段是以序列查詢的方式執行,則由 SET STATISTICS XML 或使用 SQL Server Management StudioSQL Server Management Studio 之 [包括實際執行計畫] 選項所產生的「執行程序表」輸出中,將不會包含平行處理原則運算子的 RunTimeInformation 項目。Note: If a query has been compiled as a parallel query, but at run time it is run as a serial query, the Showplan output generated by SET STATISTICS XML or by using the Include Actual Execution Plan option in SQL Server Management StudioSQL Server Management Studio will not contain the RunTimeInformation element for the Parallelism operator. 在 SET STATISTICS PROFILE 輸出中,「平行處理原則」 運算子的實際資料列計數和實際執行次數會顯示為零。In SET STATISTICS PROFILE output, the actual row counts and actual number of executes will display zeroes for the Parallelism operator. 不論發生的情況為何,都表示「平行處理原則」 運算子只用於查詢編譯期間,而不用於執行階段查詢計畫。When either condition occurs, it means that the Parallelism operator was only used during query compilation and not in the run-time query plan. 請注意,如果伺服器上有大量的並行載入,平行查詢計畫有時會以序列方式執行。Note that sometimes parallel query plans are run in serial if there is a high concurrent load on the server.
參數資料表掃描運算子圖示Parameter table scan operator icon 參數資料表掃描Parameter Table Scan 「參數資料表掃描」 運算子會掃描在目前的查詢中當做參數使用的資料表。The Parameter Table Scan operator scans a table that is acting as a parameter in the current query. 一般而言,這是用於預存程序中的 INSERT 查詢。Typically, this is used for INSERT queries within a stored procedure. 「參數資料表掃描」 是邏輯與實體運算子。Parameter Table Scan is a logical and physical operator.
NoneNone 部分彙總Partial Aggregate 「部分彙總」 用於平行計畫。Partial Aggregate is used in parallel plans. 它將彙總函式套用至盡可能最多的輸入資料列,因此不需要寫入磁碟 (稱為「溢出」)。It applies an aggregation function to as many input rows as possible so that writing to disk (known as a "spill") is not necessary. 「雜湊比對」 是唯一可以實作資料分割彙總的實體運算子 (Iterator)。Hash Match is the only physical operator (iterator) that implements partition aggregation. 部分彙總 是邏輯運算子。Partial Aggregate is a logical operator.
母體擴展查詢資料指標運算子圖示Population query cursor operator icon 母體擴展查詢Population Query 「母體擴展查詢」 運算子會在開啟資料指標時,擴展資料指標的工作資料表。The Population Query operator populates the work table of a cursor when the cursor is opened.
重新整理查詢資料指標運算子圖示Refresh query cursor operator icon 重新整理查詢Refresh Query 「重新整理查詢」 運算子會在提取緩衝區中提取資料列目前的資料。The Refresh Query operator fetches current data for rows in the fetch buffer.
遠端刪除運算子圖示Remote delete operator icon 遠端刪除Remote Delete 「遠端刪除」 運算子會刪除遠端物件的輸入資料列。The Remote Delete operator deletes the input rows from a remote object. 「遠端刪除」 是邏輯與實體運算子。Remote Delete is a logical and physical operator.
遠端索引搜尋執行程序表運算子Remote index seek showplan operator 遠端索引掃描Remote Index Scan 「遠端索引掃描」 運算子會掃描 Argument 資料行中所指定的遠端索引。The Remote Index Scan operator scans the remote index specified in the Argument column. 「遠端索引掃描」 是邏輯與實體運算子。Remote Index Scan is a logical and physical operator.
遠端索引搜尋執行程序表運算子Remote index seek showplan operator 遠端索引搜尋Remote Index Seek 「遠端索引搜尋」 運算子會使用遠端索引物件的搜尋功能來擷取資料列。The Remote Index Seek operator uses the seeking ability of a remote index object to retrieve rows. Argument 資料行包含所使用的遠端索引名稱及 SEEK:() 述詞。The Argument column contains the name of the remote index being used and the SEEK:() predicate. 「遠端索引搜尋」 是邏輯實體運算子。Remote Index Seek is a logical physical operator.
遠端插入運算子圖示Remote insert operator icon 遠端插入Remote Insert 「遠端插入」 運算子會將輸入資料列插入遠端物件。The Remote Insert operator inserts the input rows into a remote object. 「遠端插入」 是邏輯與實體運算子。Remote Insert is a logical and physical operator.
遠端查詢運算子圖示Remote query operator icon 遠端查詢Remote Query 「遠端查詢」 運算子會對遠端來源送出查詢。The Remote Query operator submits a query to a remote source. 傳給遠端伺服器的查詢文字會出現在 Argument 資料行中。The text of the query sent to the remote server appears in the Argument column. 「遠端查詢」 是邏輯與實體運算子。Remote Query is a logical and physical operator.
遠端掃描運算子圖示Remote scan operator icon 遠端掃描Remote Scan 「遠端掃描」 運算子會掃描遠端物件。The Remote Scan operator scans a remote object. 遠端物件的名稱會出現在 Argument 資料行中。The name of the remote object appears in the Argument column. 「遠端掃描」 是邏輯與實體運算子。Remote Scan is a logical and physical operator.
遠端更新運算子圖示Remote update operator icon 遠端更新Remote Update 「遠端更新」 運算子會更新遠端物件中的輸入資料列。The Remote Update operator updates the input rows in a remote object. 「遠端更新」 是邏輯與實體運算子。Remote Update is a logical and physical operator.
重新分割資料流平行處理原則運算子圖示Repartition streams parallelism operator icon 重新分割資料流Repartition Streams 重新分割資料流運算子 (或交換迭代器) 會消耗多個資料流,並產生多個記錄的資料流。The Repartition Streams operator (or exchange iterator) consumes multiple streams and produces multiple streams of records. 記錄內容與格式不會變更。The record contents and format are not changed. 如果查詢最佳化工具使用點陣圖篩選,輸出資料流中的資料列數會減少。If the query optimizer uses a bitmap filter, the number of rows in the output stream is reduced. 輸入資料流的每個資料錄會被放入一個輸出資料流。Each record from an input stream is placed into one output stream. 如果這個運算子要保留次序,那麼所有輸入資料流都必須排序好,而且合併成數個排序的輸出資料流。If this operator is order preserving, all input streams must be ordered and merged into several ordered output streams. 如果輸出經過分割,則 Argument 資料行中會包含 PARTITION COLUMNS:() 述詞與分割資料行。如果輸出經過排序,則 Argument 資料行中會包含 ORDER BY:() 述詞,以及要排序的資料行。If the output is partitioned, the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the columns being ordered. 重新分割資料流 是邏輯運算子。Repartition Streams is a logical operator. 此運算子只用於平行查詢計畫。The operator is used only in parallel query plans.
結果語言項目圖示Result language element icon 結果Result 「結果」 運算子是在查詢計畫結束時所傳回的資料。The Result operator is the data returned at the end of a query plan. 這通常是 Showplan 的根元素。This is usually the root element of a Showplan. 「結果」 是語言元素。Result is a language element.
RID 查閱運算子圖示RID lookup operator icon RID 查閱RID Lookup 「RID 查閱」 是堆積上的書籤查閱,它會使用提供的資料列識別碼 (RID)。RID Lookup is a bookmark lookup on a heap using a supplied row identifier (RID). Argument 資料行包含書籤標籤,可用以查閱資料表中的資料列,以及已查閱過之資料列的資料表名稱。The Argument column contains the bookmark label used to look up the row in the table and the name of the table in which the row is looked up. 「RID 查閱」 一律都會伴隨 NESTED LOOP JOIN。RID Lookup is always accompanied by a NESTED LOOP JOIN. 「RID 查閱」 是實體運算子。RID Lookup is a physical operator. 如需書籤查閱的詳細資訊,請參閱 MSDN SQL Server 部落格中的書籤查閱For more information about bookmark lookups, see "Bookmark Lookup" on the MSDN SQL Server blog.
資料列計數多工緩衝處理運算子圖示Row count spool operator icon 資料列計數多工緩衝處理Row Count Spool 「資料列計數多工緩衝處理」 運算子會掃描輸入、計算共有多少資料列,然後傳回一樣多但不含任何資料的資料列。The Row Count Spool operator scans the input, counting how many rows are present and returning the same number of rows without any data in them. 如果重點是檢查資料列是否存在,而不是資料列中是否包含資料,就可以使用這個運算子。This operator is used when it is important to check for the existence of rows, rather than the data contained in the rows. 例如,如果「巢狀迴圈」 運算子執行左方半聯結作業,而且聯結述詞會套用到內部輸入,就可以在「巢狀迴圈」 運算子的內部輸入上面放「資料列計數多工緩衝處理」。For example, if a Nested Loops operator performs a left semi join operation and the join predicate applies to inner input, a row count spool may be placed at the top of the inner input of the Nested Loops operator. 接著,「巢狀迴圈」 運算子可以看看「資料列計數多工緩衝處理」會輸出多少資料列 (因為不需要內部的實際資料),決定是否要傳回外部資料列。Then the Nested Loops operator can determine how many rows are output by the row count spool (because the actual data from the inner side is not needed) to determine whether to return the outer row. 「資料列計數多工緩衝處理」 是實體運算子。Row Count Spool is a physical operator.
NoneNone 右方反半聯結Right Anti Semi Join 「右方反半聯結」 運算子會在第一個 (上方) 輸入中沒有符合資料列存在時,輸出第二個 (下方) 輸入中的每一列。The Right Anti Semi Join operator outputs each row from the second (bottom) input when a matching row in the first (top) input does not exist. 相符合的資料列定義是滿足 Argument 資料行中述詞的資料列 (如果沒有任何述詞,則每一列都是相符列)。A matching row is defined as a row that satisfies the predicate in the Argument column (if no predicate exists, each row is a matching row). 右方反半聯結 是邏輯運算子。Right Anti Semi Join is a logical operator.
NoneNone 右外部聯結Right Outer Join 「右外部聯結」 運算子所傳回的每個資料列,皆滿足第二個 (下方) 輸入與第一個 (上方) 輸入之每個相符資料列的聯結。The Right Outer Join operator returns each row that satisfies the join of the second (bottom) input with each matching row from the first (top) input. 它也會傳回第二個輸入中與第一個輸入完全不相符的任何資料列,以 NULL 相聯結。It also returns any rows from the second input that had no matching rows in the first input, joined with NULL. 如果 Argument 資料行中沒有聯結述詞,則每一資料列就是一個符合資料列。If no join predicate exists in the Argument column, each row is a matching row. 右外部聯結 是邏輯運算子。Right Outer Join is a logical operator.
NoneNone 右方半聯結Right Semi Join 當第一個 (頂端) 輸入有相符的資料列時,「右方半聯結」 運算子會從第二個 (底端) 輸入傳回每一個資料列。The Right Semi Join operator returns each row from the second (bottom) input when there is a matching row in the first (top) input. 如果 Argument 資料行中沒有聯結述詞,則每一資料列就是一個符合資料列。If no join predicate exists in the Argument column, each row is a matching row. 右方半聯結 是邏輯運算子。Right Semi Join is a logical operator.
區段運算子圖示Segment operator icon 區段Segment 「區段」 是實體和邏輯運算子。Segment is a physical and a logical operator. 它會根據一或多個資料行的值,將輸入集分割為區段。It divides the input set into segments based on the value of one or more columns. 這些資料行在「區段」 運算子中會顯示為引數。These columns are shown as arguments in the Segment operator. 然後運算子一次會輸出一個區段。The operator then outputs one segment at a time.
序列運算子圖示Sequence operator icon 序列Sequence 「序列」 運算子會驅動大範圍的更新計畫。The Sequence operator drives wide update plans. 在功能上,它會依序執行每個輸入 (由上而下)。Functionally, it executes each input in sequence (top to bottom). 每個輸入通常是更新不同的物件。Each input is usually an update of a different object. 它只會傳回來自最後一個 (下方) 輸入的資料列。It returns only those rows that come from its last (bottom) input. 「序列」 是邏輯與實體運算子。Sequence is a logical and physical operator.
序列專案運算子圖示Sequence project operator icon 順序專案Sequence Project 「順序專案」 運算子會加入資料行以執行已排序集合的計算。The Sequence Project operator adds columns to perform computations over an ordered set. 它會根據一或多個資料行的值,將輸入集分割為區段。It divides the input set into segments based on the value of one or more columns. 然後運算子一次會輸出一個區段。The operator then outputs one segment at a time. 這些資料行在「順序專案」 運算子中會顯示為引數。These columns are shown as arguments in the Sequence Project operator. 「順序專案」 是邏輯與實體運算子。Sequence Project is a logical and physical operator.
NoneNone 區段重新分割Segment Repartition 在平行查詢計畫中,有時候會有 Iterator 的概念區。In a parallel query plan, sometimes there are conceptual regions of iterators. 在這種區域內的所有 Iterator,都可以由平行執行緒來執行。All of the iterators within such a region can be executed by parallel threads. 區域本身必須連續執行。The regions themselves must be executed serially. 個別區域內的一些「平行處理原則」 Iterator,稱作「分支重新分割」 。Some of the Parallelism iterators within an individual region are called Branch Repartition. 在兩個這種區域的界限上的「平行處理原則」 Iterator,稱作「區段重新分割」 。The Parallelism iterator at the boundary of two such regions is called Segment Repartition. 「分支重新分割」 和「區段重新分割」 都是邏輯運算子。Branch Repartition and Segment Repartition are logical operators.
快照集資料指標運算子圖示Snapshot cursor operator icon 快照式Snapshot 「快照式」 運算子會建立一個資料指標,而不會看到其他人所做的變更。The Snapshot operator creates a cursor that does not see changes made by others.
排序運算子圖示Sort operator icon 排序Sort 「排序」 運算子會排序所有內送的資料列。The Sort operator sorts all incoming rows. 如果這個作業會移除重複的項目,則 Argument 資料行中會包含 DISTINCT ORDER BY:() 述詞,或包含 ORDER BY:() 述詞以及將會排序的資料行清單 (以逗號分隔)。The Argument column contains either a DISTINCT ORDER BY:() predicate if duplicates are removed by this operation, or an ORDER BY:() predicate with a comma-separated list of the columns being sorted. 如果將資料行依遞增順序排序,資料行前會加上 ASC 值,如果將資料行依遞減順序排序,資料行前會加上 DESC 值。The columns are prefixed with the value ASC if the columns are sorted in ascending order, or the value DESC if the columns are sorted in descending order. 「排序」 是邏輯與實體運算子。Sort is a logical and physical operator.
分割運算子圖示Split operator icon 分割Split 「分割」 運算子可用以最佳化更新處理。The Split operator is used to optimize update processing. 它會將每個更新分割成一個刪除和一個插入作業。It splits each update operation into a delete and an insert operation. 「分割」 是邏輯與實體運算子。Split is a logical and physical operator.
多工緩衝處理運算子圖示Spool operator icon 急切的多工緩衝處理Eager Spool 「急切的多工緩衝處理」 運算子會取用整個輸入,將每一列儲存在 tempdb 資料庫的隱藏暫存物件中。The Eager Spool operator takes the entire input, storing each row in a hidden temporary object stored in the tempdb database. 如果倒轉運算子 (例如,利用「巢狀迴圈」 運算子),但是不需要重新繫結,會使用多工緩衝處理資料,而非重新掃描輸入。If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. 如果必須重新繫結的話,就丟棄多工緩衝處理的資料,然後重新掃描 (重新繫結) 輸入以重建多工緩衝處理物件。If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. 「急切的多工緩衝處理」 運算子會以「急切的」方式建立多工緩衝處理檔案:當多工緩衝處理的父系運算子要求第一列時,「多工緩衝處理」運算子會消耗其輸入運算子的所有資料列,並將它們儲存在多工緩衝處理中。The Eager Spool operator builds its spool file in an "eager" manner: when the spool's parent operator asks for the first row, the spool operator consumes all rows from its input operator and stores them in the spool. 急切的多工緩衝處理 是邏輯運算子。Eager Spool is a logical operator.
多工緩衝處理運算子圖示Spool operator icon 延遲多工緩衝處理Lazy Spool 「延遲多工緩衝處理」 邏輯運算子會將其輸入的每一個資料列,都儲存在 tempdb 資料庫內隱藏的暫存物件中。The Lazy Spool logical operator stores each row from its input in a hidden temporary object stored in the tempdb database. 如果倒轉運算子 (例如,利用「巢狀迴圈」 運算子),但是不需要重新繫結,會使用多工緩衝處理資料,而非重新掃描輸入。If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. 如果必須重新繫結的話,就丟棄多工緩衝處理的資料,然後重新掃描 (重新繫結) 輸入以重建多工緩衝處理物件。If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. 「延遲多工緩衝處理」 運算子會以「延遲」方式建立它的多工緩衝處理檔案,也就是說,每次多工緩衝處理的父系運算子要求一個資料列時,多工緩衝處理運算子就會從它的輸入運算子取得一個資料列,然後將它儲存在多工緩衝處理內,而不是一次取用所有資料列。The Lazy Spool operator builds its spool file in a "lazy" manner, that is, each time the spool's parent operator asks for a row, the spool operator gets a row from its input operator and stores it in the spool, rather than consuming all rows at once. Lazy Spool 是邏輯運算子。Lazy Spool is a logical operator.
多工緩衝處理運算子圖示Spool operator icon 多工緩衝處理Spool 「多工緩衝處理」 運算子會將中繼查詢結果儲存到 tempdb 資料庫。The Spool operator saves an intermediate query result to the tempdb database.
資料流彙總運算子圖示Stream aggregate operator icon Stream AggregateStream Aggregate 「資料流彙總」 運算子會依據一個或多個資料行將資料列分組,然後計算查詢所傳回的一個或多個彙總運算式。The Stream Aggregate operator groups rows by one or more columns and then calculates one or more aggregate expressions returned by the query. 這個運算子的輸出可稍後由查詢中的運算子參考,並/或傳回到用戶端。The output of this operator can be referenced by later operators in the query, returned to the client, or both. 「資料流彙總」 運算子需要其群組內的輸入項目依資料行排列。The Stream Aggregate operator requires input ordered by the columns within its groups. 如果資料因為前面的「排序」 運算子或因為已排序索引搜尋或掃描,而尚未排序,最佳化工具就會在這個運算子之前使用「排序」 運算子。The optimizer will use a Sort operator prior to this operator if the data is not already sorted due to a prior Sort operator or due to an ordered index seek or scan. 在 SHOWPLAN_ALL 陳述式或 SQL Server Management StudioSQL Server Management Studio 的圖形執行計畫中,GROUP BY 述詞中的資料行會列於 Argument 資料行中,而彙總運算式則會列在 Defined Values 資料行中。In the SHOWPLAN_ALL statement or the graphical execution plan in SQL Server Management StudioSQL Server Management Studio, the columns in the GROUP BY predicate are listed in the Argument column, and the aggregate expressions are listed in the Defined Values column. 「資料流彙總」 是實體運算子。Stream Aggregate is a physical operator.
參數運算子圖示Switch operator icon 參數Switch 「參數」 是一種特殊類型的串連 Iterator,它有 n 個輸入。Switch is a special type of concatenation iterator that has n inputs. 運算式與每一個「參數」 運算子相關聯。An expression is associated with each Switch operator. 根據運算式的傳回值 (介於 0 和 n-1 之間),「參數」 會將適當的輸入資料流複製到輸出資料流。Depending on the return value of the expression (between 0 and n-1), Switch copies the appropriate input stream to the output stream. 「參數」 的用途之一是實作查詢計畫,包括利用某些運算子向前快轉資料指標,例如 TOP 運算子。One use of Switch is to implement query plans involving fast forward cursors with certain operators such as the TOP operator. 「參數」 同時為邏輯和實體運算子。Switch is both a logical and physical operator.
資料表刪除運算子圖示Table delete operator icon 資料表刪除Table Delete 「資料表刪除」 實體運算子會從查詢執行計畫之 Argument 資料行所指定的資料表中刪除資料列。The Table Delete physical operator deletes rows from the table specified in the Argument column of the query execution plan.
資料表插入運算子圖示Table insert operator icon 資料表插入Table Insert 「資料表插入」 運算子會從輸入將資料列插入查詢執行計畫之 Argument 資料行所指定的資料表中。The Table Insert operator inserts rows from its input into the table specified in the Argument column of the query execution plan. Argument 資料行也包含 SET:() 述詞,指出每一個資料行設定的值。The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. 如果「資料表插入」 沒有插入值的子系,則會從插入運算子本身取得插入的資料列。If Table Insert has no children for insert values, then the row inserted is taken from the Insert operator itself. 「資料表插入」 是實體運算子。Table Insert is a physical operator.
資料表合併運算子Table merge operator 資料表合併Table Merge 「資料表合併」 運算子會將合併資料流套用到堆積中。The Table Merge operator applies a merge data stream to a heap. 此運算子會從運算子之 Argument 資料行內所指定的資料表中刪除、更新或插入資料列。The operator deletes, updates, or inserts rows in the table specified in the Argument column of the operator. 所執行的實際作業取決於運算子之 Argument 資料行內指定之 ACTION 資料行的執行階段值。The actual operation performed depends on the run-time value of the ACTION column specified in the Argument column of the operator. 「資料表合併」 是實體運算子。Table Merge is a physical operator.
資料表掃描運算子圖示Table scan operator icon 資料表掃描Table Scan 「資料表掃描」 運算子會從查詢執行計畫之 Argument 資料行所指定的資料表中擷取所有資料列。The Table Scan operator retrieves all rows from the table specified in the Argument column of the query execution plan. 如果 Argument 資料行中出現 WHERE:() 述詞,就只會傳回滿足述詞的那些資料列。If a WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. 「資料表掃描」 是邏輯與實體運算子。Table Scan is a logical and physical operator.
資料表多工緩衝處理運算子圖示Table spool operator icon 資料表多工緩衝處理Table Spool 「資料表多工緩衝處理」 運算子會掃描輸入,並將每個資料列的複本放入隱藏的多工緩衝資料表 (儲存在 tempdb 資料庫,直到查詢結束就不再存在)。The Table Spool operator scans the input and places a copy of each row in a hidden spool table that is stored in the tempdb database and existing only for the lifetime of the query. 如果倒轉運算子 (例如,利用「巢狀迴圈」 運算子),但是不需要重新繫結,會使用多工緩衝處理資料,而非重新掃描輸入。If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. 「資料表多工緩衝處理」 是實體運算子。Table Spool is a physical operator.
資料表多工緩衝處理運算子圖示Table spool operator icon 視窗多工緩衝處理Window Spool 「視窗多工緩衝處理」 運算子會將每一列展開成一組資料列,分別代表與其關聯的視窗。The Window Spool operator expands each row into the set of rows that represents the window associated with it. 查詢中的 OVER 子句會定義查詢結果集中的視窗,以及一個計算視窗中各資料列值的視窗函數。In a query, the OVER clause defines the window within a query result set and a window function then computes a value for each row in the window. 「視窗多工緩衝處理」 是邏輯與實體運算子。Window Spool is a logical and physical operator.
資料表更新運算子圖示Table update operator icon 資料表更新Table Update 「資料表更新」 實體運算子會更新查詢執行計畫之 Argument 資料行所指定資料表中的輸入資料列。The Table Update physical operator updates input rows in the table specified in the Argument column of the query execution plan. SET:() 述詞決定每個更新資料行的值。The SET:() predicate determines the value of each updated column. 在 SET 子句中或這個運算子中,以及這個查詢中的其他位置,皆可參考這些數值。These values may be referenced in the SET clause or elsewhere within this operator as well as elsewhere within this query.
資料表值函式運算子圖示Table-valued function operator icon 資料表值函式Table-valued Function 「資料表值函式」 運算子會評估資料表值函數 (Transact-SQLTransact-SQL 或 CLR),並將產生的資料列儲存至 tempdb 資料庫。The Table-valued Function operator evaluates a table-valued function (either Transact-SQLTransact-SQL or CLR), and stores the resulting rows in the tempdb database. 如果父系 Iterator 要求資料列,「資料表值函式」 便會從 tempdb 傳回資料列。When the parent iterators request the rows, Table-valued Function returns the rows from tempdb.

含有呼叫資料表值函數的查詢會產生內含「資料表值函式」 Iterator 的查詢計畫。Queries with calls to table-valued functions generate query plans with the Table-valued Function iterator. 「資料表值函式」 可以使用不同的參數值進行評估:Table-valued Function can be evaluated with different parameter values:

-
「資料表值函式 XML 讀取器」 可輸入 XML BLOB 作為參數,並以 XML 文件的順序,產生代表 XML 節點的資料列集。Table-valued Function XML Reader inputs an XML BLOB as a parameter and produces a rowset representing XML nodes in XML document order. 其他的輸入參數可能會限制傳回給 XML 文件子集的 XML 節點。Other input parameters may restrict XML nodes returned to a subset of XML document.

-「含 XPath 篩選的資料表值函式 XML 讀取器」 是一種特別的 XML 讀取器資料表值函式,可將輸出限制為滿足 XPath 運算式的 XML 節點。-Table Valued Function XML Reader with XPath filter is a special type of XML Reader Table-valued Function that restricts output to XML nodes satisfying an XPath expression.

「資料表值函式」 是邏輯與實體運算子。Table-valued Function is a logical and physical operator.
NoneNone 前 N 個排序Top N Sort 「前 N 個排序」 與「排序」 Iterator 類似,只不過它只需要前 N 個資料列,而不是整個結果集。Top N Sort is similar to the Sort iterator, except that only the first N rows are needed, and not the entire result set. N 值較小,SQL ServerSQL Server 查詢執行引擎會嘗試在記憶體中執行整個排序作業。For small values of N, the SQL ServerSQL Server query execution engine attempts to perform the entire sort operation in memory. N的值較大,則查詢執行引擎會訴諸比較一般性的排序方法,而不採用 N 作為參數。For large values of N, the query execution engine resorts to the more generic method of sorting to which N is not a parameter.
頂端運算子圖示Top operator icon 頂端Top 「頂端」 運算子會掃描輸入,可能會根據排序的先後順序,只傳回指定數目或百分比的資料列。The Top operator scans the input, returning only the first specified number or percent of rows, possibly based on a sort order. Argument 資料行可以包含要檢查繫結的資料行清單。The Argument column can contain a list of the columns that are being checked for ties. 在更新計畫中,可使用「頂端」 運算子強行限制資料列數。In update plans, the Top operator is used to enforce row count limits. 「頂端」 是邏輯與實體運算子。Top is a logical and physical operator.
擴充運算子 (UDX) 圖示Extended operator (UDX) icon UDXUDX 擴充運算子 (UDX) 會在 SQL ServerSQL Server中實作許多 XQuery 和 XPath 作業的其中一項。Extended Operators (UDX) implement one of many XQuery and XPath operations in SQL ServerSQL Server. 所有 UDX 運算子都是邏輯和實體運算子。All UDX operators are both logical and physical operators.

擴充運算子 (UDX) FOR XML 用於序列化關聯式資料列集,它會在單一輸出資料列的單一 BLOB 資料行中,以 XML 表示法輸入這個資料列集。Extended operator (UDX) FOR XML is used to serialize the relational row set it inputs into XML representation in a single BLOB column in a single output row. 這是一個會區分順序的 XML 彙總運算子。It is an order sensitive XML aggregation operator.

擴充運算子 (UDX) XML SERIALIZER 是區分順序的 XML 彙總運算子,Extended operator (UDX) XML SERIALIZER is an order sensitive XML aggregation operator. 會以 XML 文件順序來輸入用於表示 XML 節點或 XQuery 純量的資料列,並在單一輸出資料列的單一 XML 資料行中產生序列化的 XML BLOB。It inputs rows representing XML nodes or XQuery scalars in XML document order and produces a serialized XML BLOB in a single XML column in a single output row.

擴充運算子 (UDX) XML FRAGMENT SERIALIZER 是特殊類型的 XML SERIALIZER ,可用於處理輸入資料列,而此輸入資料列用於表示要插入至 XQuery 插入資料修改延伸模組的 XML 片段。Extended operator (UDX) XML FRAGMENT SERIALIZER is a special type of XML SERIALIZER that is used for processing input rows representing XML fragments being inserted in XQuery insert data modification extension.

擴充運算子 (UDX) XQUERY STRING 會評估用於表示 XML 節點之輸入資料列的 XQuery 字串值。Extended operator (UDX) XQUERY STRING evaluates the XQuery string value of input rows representing XML nodes. 這是一個區分順序的字串彙總運算子。It is an order sensitive string aggregation operator. 它會輸出一個資料列以及多個資料行,每個資料行都代表含有輸入字串值的 XQuery 純量。It outputs one row with columns representing the XQuery scalar that contains string value of the input.

擴充運算子 (UDX) XQUERY LIST DECOMPOSER 是 XQuery 清單分解運算子。Extended operator (UDX) XQUERY LIST DECOMPOSER is an XQuery list decomposition operator. 針對代表 XML 節點的每一個輸入資料列,會產生代表 XQuery 純量的一或多個資料列,而如果輸入是 XSD 清單類型,則包含清單元素值。For each input row representing an XML node it produces one or more rows each representing XQuery scalar containing a list element value if the input is of XSD list type.

擴充運算子 (UDX) XQUERY DATA 會評估表示 XML 節點之輸入的 XQuery fn:data() 函數。Extended operator (UDX) XQUERY DATA evaluates the XQuery fn:data() function on input representing XML nodes. 這是一個區分順序的字串彙總運算子。It is an order sensitive string aggregation operator. 它會輸出一個資料列以及多個資料行,每個資料行都代表含有 fn:data() 結果的 XQuery 純量。It outputs one row with columns representing XQuery scalar that contains the result of fn:data().

擴充運算子 (UDX) XQUERY CONTAINS 會評估表示 XML 節點之輸入的 XQuery fn:data() 函數。Extended operator XQUERY CONTAINS evaluates the XQuery fn:contains() function on input representing XML nodes. 這是一個區分順序的字串彙總運算子。It is an order sensitive string aggregation operator. 它會輸出一個資料列以及多個資料行,每個資料行都代表含有 fn:contains() 結果的 XQuery 純量。It outputs one row with columns representing XQuery scalar that contains the result of fn:contains().

擴充運算子 UPDATE XML NODE 會更新 XML 類型之 modify() 方法中,XQuery 取代資料修改延伸模組內的 XML 節點。Extended operator UPDATE XML NODE updates XML node in the XQuery replace data modification extension in the modify() method on XML type.
NoneNone UnionUnion Union 運算子會掃描多個輸入,輸出掃描的每一資料列,並移除重複項。The Union operator scans multiple inputs, outputting each row scanned and removing duplicates. Union 是邏輯運算子。Union is a logical operator.
更新 (資料庫引擎) 運算子圖示Update (Database Engine) operator icon UpdateUpdate 「更新」 運算子會在查詢執行計畫之 Argument 資料行所指定的物件上,從其輸入中更新每一個資料列。The Update operator updates each row from its input in the object specified in the Argument column of the query execution plan. 「更新」 是邏輯運算子。Update is a logical operator. 實體運算子是「資料表更新」 、「索引更新」 或「叢集索引更新」 。The physical operator is Table Update, Index Update, or Clustered Index Update.
While 語言項目圖示While language element icon WhileWhile While 運算子會實作 Transact-SQLTransact-SQL while 迴圈。The While operator implements the Transact-SQLTransact-SQL while loop. While 是語言元素。While is a language element