Showplan logical and physical operators

This topic provides the descriptions of the logical and physical operators.

Execution Plan Icon Name Operators and constructs Description
Assert Assert Physical operator Verifies a condition during query execution. If the expression evaluates to NULL, the row passes through the operator and execution continues. If the expression evaluates to a NOT NULL value, an error is raised.
Commonly used to enforce CHECK constraints and FOREIGN KEY relationships in INSERT, UPDATE, DELETE, and MERGE statements.
Assign Assign Language element Assigns a value to a variable.
Bitmap Bitmap Physical operator Applies bitmap filtering in parallel query plans to improve performance with large data sets. Filters out rows that cannot produce JOIN matches before passing them to downstream operators such as Parallelism.
Clustered Index Delete Clustered Index Delete Physical operator Deletes rows from the clustered index specified in the Argument column of the query execution plan. If the Argument column includes a WHERE predicate, only rows that satisfy the predicate are deleted.
Clustered Index Insert Clustered Index Insert Physical operator Inserts rows into the clustered index. The rows can come from the operator’s child subtree or be provided directly to the Insert operator.
Clustered Index Merge Clustered Index Merge Physical operator Applies a merged data stream to a clustered index. Depending on the runtime value of the ACTION column specified in the Argument column, it deletes, updates, or inserts rows into the clustered index.
Clustered Index Scan Clustered Index Scan Logical and physical operator Scans a clustered index specified in the Argument column of the execution plan and returns all rows or only those that satisfy a WHERE predicate, if defined.
Clustered Index Seek Clustered Index Seek Logical and physical operator Performs a seek operation on a clustered index using a specified predicate. Retrieves only the rows that match the SEEK condition.
Clustered Index Update Clustered Index Update Logical and physical operator Updates rows in a clustered index as specified in the operator arguments.
Collapse Collapse Logical and physical operator Optimizes update processing by collapsing a pair of DELETE and INSERT operations into a single UPDATE.
Columnstore Index Scan Columnstore Index Scan Physical operator Scans all data from a columnstore index specified in the Argument column of the query execution plan.
Compute Scalar Compute Scalar Logical and physical operator Calculates a new scalar value based on input data. The result can be returned to the user or used in filters, joins, or other computations.
Concatenation Concatenation Logical and physical operator Combines multiple input sets into a single output. Often used to implement the Transact-SQL UNION ALL construct.
Constant Scan Constant Scan Logical and physical operator Introduces a constant row into a query. It is often used to add columns to the row produced by a Constant Scan.
Catchall Catchall Placeholder icon Indicates that the graphical showplan could not assign a specific icon to an element. Does not necessarily indicate an error.
There are three types of catchall icons:
  • blue (for iterators)
  • orange (for cursors)
  • green (for Transact-SQL language elements)
Delete Delete   Deletes rows from a target object. If a WHERE predicate is present, only matching rows are deleted.
Deleted Scan Deleted Scan Physical operator Appears only in execution plans for trigger code. Scans the deleted pseudo-table within the trigger.
Dynamic Dynamic Physical operator Represents a dynamic cursor that reflects all changes made to the underlying data as it is fetched.
Fetch Query Fetch Query Physical operator Fetches rows as part of a FETCH operation on a cursor.
Filter Filter Physical operator Scans the input, returning only those rows that satisfy the condition.
Hash Match Hash Match Physical operator Builds a hash table from the first input and uses it for joins or aggregations on the second input.
Insert Insert Logical operator Inserts rows into a target object. Implemented physically using operators like Table Insert, Index Insert, or Clustered Index Insert.
Inserted Scan Inserted Scan Logical and physical operator Scans the inserted pseudo-table in triggers.
Key Lookup Key Lookup Physical operator Retrieves a full row from a clustered index using a key from a non-clustered index. Often appears alongside a Nested Loops operator and may signal a need for a covering index.
Keyset Keyset Physical operator Represents the declaration of a keyset-driven cursor that can detect updates made by others but not inserts.
Log Row Scan Log Row Scan Logical and physical operator Scans the transaction log.
Merge Interval Merge Interval Logical and physical operator Combines multiple sets of potentially overlapping intervals into fewer, non-overlapping intervals, which are then used to seek index entries.
Merge Join Merge Join Physical operator Performs a join by merging two sorted inputs based on the join keys. Supports various join types, including inner, outer, semi, and anti joins.
Nested Loops Nested Loops Physical operator Performs join operations such as inner join, left outer join, left semi join, and left anti semi join. For each row in the outer input, the operator scans the inner input to find matching rows.
Non-clustered Index Delete Nonclustered Index Delete Physical operator Deletes input rows from a non-clustered index.
Index Insert Index Insert Physical operator Inserts input rows into a nonclustered index.
Index Scan Index Scan Logical and physical operator Reads all data from a non-clustered index.
Index Seek Index Seek Logical and physical operator Uses the seeking ability of indexes to find a specific row in a nonclustered index based on a key value.
Index Spool Index Spool Physical operator Stores its input rows in an internal, indexed worktable in the tempdb database. This worktable exists only for the duration of the query and allows re-processing specific subsets of data without rescanning the input.
Nonclustered Index Update Nonclustered Index Update Physical operator Updates rows in a nonclustered index.
Online Index Insert Online Index Insert Physical operator Indicates that an index creation, alteration, or drop operation is performed without taking the index offline.
Parallelism Parallelism Physical operator Manages the distribution of rows between threads in parallel query plans. Also referred to as the Exchange operator.
Parameter Table Scan Parameter Table Scan Logical and physical operator Scans a table used as a parameter in the current query. Common in stored procedures for INSERT operations.
Population Query Population Query Physical operator Executes the query defined by an OPEN CURSOR statement and populates the result set.
Refresh Query Refresh Query Physical operator Fetches current data for rows in the fetch buffer.
Remote Delete Remote Delete Logical and physical operator Deletes rows from a remote object.
Remote Index Scan Remote Index Scan Logical and physical operator Seeks specific rows in a remote index using key values.
Remote Index Seek Remote Index Seek Logical and physical operator Uses the seeking ability of a remote index object to retrieve rows.
Remote Insert Remote Insert Logical and physical operator Inserts rows into a remote object.
Remote Query Remote Query Logical and physical operator Sends a query to a remote data source and retrieves the result set.
Remote Scan Remote Scan Logical and physical operator Reads all data from a remote object.
Remote Update Remote Update Logical and physical operator Updates rows in a remote object.
RID Lookup RID Lookup Physical operator Retrieves a row from a heap table based on a RID value. Typically follows a nonclustered index seek.
Row Count Spool Row Count Spool Physical operator Scans the input, counts the number of rows in it, and then returns the same number of empty rows.
Segment Segment Physical and logical operator Divides the input into segments based on the value of one or more columns. Marks the start of each segment.
Sequence Sequence Logical and physical operator Processes two or more inputs in sequence, returning only the rows from the final input.
Sequence Project Sequence Project Logical and physical operator Adds new columns to perform calculations over ordered input. Divides input into segments and processes each segment.
Snapshot Snapshot Physical operator Represents the declaration of a static cursor that does not see changes made by others.
Sort Sort Logical and physical operator Sorts input rows based on specified columns and returns them in order.
Split Split Logical and physical operator Optimizes update processing by replacing update operations with the corresponding DELETE and INSERT operations.
Stream Aggregate Stream Aggregate Physical operator Calculates aggregation results by reading a sorted input stream and returning a single row for each set of rows with the same key value.
Switch Switch Logical and physical operator Executes only one of its inputs; which input is executed is determined at runtime.
Table Delete Table Delete Physical operator Deletes rows from a heap table and, optionally, associated nonclustered indexes.
Table Insert Table Insert Physical operator Inserts rows into a heap table and, optionally, into associated nonclustered indexes.
Table Merge Table Merge Physical operator Applies a stream of changes (insert, update, delete) to a heap table and associated indexes.
Table Scan Table Scan Logical and physical operator Reads all rows from a heap table. Returns all rows or only those matching a WHERE condition.
Table Spool Table Spool Physical operator Stores a copy of input rows in a hidden spool table in tempdb. Used to avoid rescanning the original input.
Table Update Table Update Physical operator Updates rows in a heap table and, optionally, associated indexes.
Table-valued Function Table-valued Function Language element Executes a table-valued function and stores the results in a temporary table.
Top Top Logical and physical operator Scans the input and returns only the first specified number or percentage of rows, optionally skipping an initial set and including additional rows in case of ties on specified columns.
UDX UDX Logical and physical operator Implements XQuery and XPath operations in SQL Server.
Update Update Logical operator Updates rows in a target table. Backed by one of the physical operators: Table Update, Index Update, or Clustered Index Update.