Operator List

The list below shows all currently known operators, with their icons as shown  in SQL Server Management Studio (SSMS) and in Azure Data Studio. The artwork for the operator icons was changed in SSMS version 17.4 (December 2017); both versions are included. As of February 2019, SentryOne’s Plan Explorer (the most popular third-party product for working with execution plans) changed its icons from the SSMS pre-17.3 versions to their own set, which is now also included. The operator names are hyperlinks to their detailed description. If a name is not a hyperlink, there is no detailed description page for that operator yet.
NameSSMS 17.4 and upSSMS 17.3 and olderAzure Data StudioPlan ExplorerShort description
Adaptive Join(no icon)Joins two inputs using either hashing or nested loops. The choice is made at run-time, depending on the number of rows in the first input.
AssertVerifies a condition; raises an error and aborts processing if the condition is met.
Batch Hash Table Build(no icon)SQL Server 2012 only. Maps input values for a join to a hash table, that can then be used to reduce the number of rows to be processed for the other input of that join.
BitmapMaps input values for a join to a bitmap, that can then be used to reduce the number of rows to be processed for the other input of that join.
CatchallThis icon is used when no suitable specific icon for the operation exists. It is mostly seen in estimated execution plans for cursor operations.
Clustered Index DeleteDeletes rows from a clustered index, and optionally from one or more nonclustered indexes at the same time.
Clustered Index InsertInserts rows into a clustered index, and optionally into one or more nonclustered indexes at the same time.
Clustered Index Merge(no icon)Applies a stream of insert, update, and delete instructions to a clustered index, and optionally applies the corresponding changes to one or more nonclustered indexes at the same time.
Clustered Index ScanReads all data from a clustered index, either in allocation order or in logical (index) order.
Clustered Index SeekFinds a specific row in a clustered index, based on key value; and optionally continues to scan from there in logical (index) order.
Clustered Index UpdateUpdates rows in a clustered index, and optionally in one or more nonclustered indexes at the same time.
CollapseOptimizes update processing by replacing a delete and insert for the same key value with a single update.
Columnstore Index Deleten/aDeletes rows from a columnstore index.
Columnstore Index Insertn/aInserts rows into a columnstore index.
Columnstore Index Merge
n/a
Applies a stream of insert, update, and delete instructions to a columnstore index.
Columnstore Index Scan
Reads all data from a columnstore index.
Columnstore Index Updaten/aUpdates rows in a columnstore index.
Compute ScalarEvaluates one or more expressions and adds their results to the data stream.
ConcatenationProcesses two or more inputs, in order, returning all rows returned from each of those inputs.
CONDIn estimated execution plans only, used to represent the condition evaluation of IF and WHILE statements.
Constant ScanGenerates one or more rows with zero or more columns, with constant values as defined in the operator’s properties.
Deleted Scan(no icon)Reads all data from the deleted pseudo-table. Used in triggers only.
DynamicUsed in estimated execution plans only to represent the declaration of a dynamic cursor.
Fetch QueryUsed in estimated execution plans only to represent the query to be used for FETCH statements.
FilterApplies a predicate to its input rows and returns only rows for which the predicate evaluates to True.
Hash MatchBuilds a hash table from its first input, then uses that hash table to either join to its second input, or produce aggregated values.
Index Delete(no icon)Deletes rows from a nonclustered index.
Index Insert(no icon)Inserts rows into a nonclustered index.
Index ScanReads all data from a nonclustered index, either in allocation order or in logical (index) order.
Index SeekFinds a specific row in a nonclustered index, based on key value; and optionally continues to scan from there in logical (index) order.
Index Spool(no icon)Stores its input rows in an internal, indexed worktable; this indexed worktable can then be used to re-process specific subsets of the data.
Index Update(no icon)Updates rows in a nonclustered index.
Inserted ScanReads all data from the inserted pseudo-table. Used in triggers only.
Key LookupReads a single row from a clustered index, based on a key value that was retrieved from a nonclustered index on the same table.
KeysetUsed in estimated execution plans only to represent the declaration of a dynamic cursor.
Language ElementThis icon is used for operators for which no suitable specific icon is available. It is mostly seen as the top-left operator of an execution plan for operations other than SELECT, serving as the container for properties of the plan as a whole.
It is also used, in estimated execution plans only, for statements with no execution plan.
Merge IntervalCombines multiple sets of potentially overlapping intervals into lesser but non-overlapping intervals.
Merge JoinJoins two inputs that are ordered by the join key(s), exploiting the known sort order for optimal processing efficiency.
Nested LoopsJoins two inputs by repeatedly executing the second input for each row in the first input.
Online Index InsertFor an online index rebuild, this operator represents the insertion of data in an index while keeping the index online.
Parallelism







(Different icons used depending on the logical operation)
The parallelism operators, also known as exchange operators, manage the distribution of rows between threads in parallel plans.
Population QueryUsed in estimated execution plans only to represent the query to be used for the OPEN statement.
Remote DeleteDeletes rows from a remote object.
Remote InsertInserts rows into a remote object.
Remote QuerySubmits a query to a remote destination for execution there. The operator will then return all rows produced by the remote destination.
Remote ScanReads all data from a remote object.
Remote UpdateUpdates rows in a remote object.
ResultAlso known as “Select”, this icon is used as the top-left operator in any plan for a SELECT statement. It can be considered the representation of the client, and serves as the container for properties of the plan as a whole.
RID LookupReads a single row from a heap table, based on an RID value that was retrieved from a nonclustered index on the same table.
Row Count SpoolCounts the number of rows in its input and then returns the same number of empty rows.
SegmentMarks the start of each new segment in the data stream by inspecting specific columns for a change in their data.
SequenceProcesses two or more inputs, in order, returning only rows returned from the final input.
Sequence ProjectComputes values that are determined by a row’s relative position within the entire data stream.
SnapshotUsed in estimated execution plans only to represent the declaration of a static cursor.
SortReads all input rows, sorts them, and then returns them in the specified order.
SplitOptimizes update processing by replacing update operations in the corresponding delete and insert operations.
Stream AggregateComputes aggregation results by reading a sorted input stream and returning a single row for each set of rows with the same key value.
SwitchExecutes only one of its inputs; which input is executed is determined at runtime.
Table DeleteDeletes rows from a heap table, and optionally from one or more nonclustered indexes at the same time.
Table InsertInserts rows into a heap table, and optionally into one or more nonclustered indexes at the same time.
Table Merge(no icon)Applies a stream of insert, update, and delete instructions to a heap table, and optionally applies the corresponding changes to one or more nonclustered indexes at the same time.
Table ScanReads all data from a heap table, in allocation order.
Table SpoolStores its input rows in an internal worktable; this worktable can then be used to re-process the same data.
Table UpdateUpdates rows in a heap table, and optionally in one or more nonclustered indexes at the same time.
Table-valued FunctionExecutes a table-valued function and stores the results in a temporary table.
TopReturns only the first part of its input. Depending on the specification, this might only process the rows it returns, or it might process more rows.
UDX(no icon)A catch-all operator icon and name for what is in fact a set of different “extended” operators that are involved in various XML (XQuery and XPath) operations.
Window Aggregate(no icon)Evaluates one or more aggregate expressions with a window definition and adds their results to the data stream.
Window Spool(no icon)Stores its input rows in an internal worktable; for each row then returns all rows associated with its window specification.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close