Execution plan operators at a glance
This table comprises all the execution plan operators ordered lexicographically.
- 
Leaf operators, in most cases, locate the starting nodes and relationships required in order to execute the query. 
- 
Updating operators are used in queries that update the graph. 
- 
Eager operators accumulate all their rows before piping them to the next operator. 
| Name | Description | Leaf? | Updating? | Considerations | 
|---|---|---|---|---|
| Reads all nodes from the node store. | Y | |||
| Performs a nested loop. If a variable is  | ||||
| Performs a nested loop. Tests for the absence of a pattern predicate. | ||||
| Performs a nested loop. Yields rows from both the left-hand and right-hand side operators. | ||||
| Indicates the variable to be used as an argument to the right-hand side of an  | Y | |||
| Used to ensure that no unique constraints are violated. | ||||
| Reads node or relationship properties and caches them. | ||||
| Produces a cartesian product of the inputs from the left-hand and right-hand operators. | ||||
| Performs a nested loop. If a variable is not  | ||||
| Creates an index on a property for all nodes having a certain label. | Y | |||
| Creates a node key constraint on a set of properties for all nodes having a certain label. | Y | |||
| Creates nodes and relationships. | Y | |||
| Creates an existence constraint on a property for all nodes having a certain label. | Y | |||
| Creates an existence constraint on a property for all relationships of a certain type. | Y | |||
| Creates a unique constraint on a property for all nodes having a certain label. | Y | |||
| Deletes a node or relationship. | Y | |||
| Deletes a node and its relationships. | Y | |||
| Reads one or more relationships by id from the relationship store. | Y | |||
| Drops duplicate rows from the incoming stream of rows. | Eager | |||
| Checks if a constraint already exists, if it does then it stops the execution, if not it continues | Y | |||
| Checks if an index already exists, if it does then it stops the execution, if not it continues | Y | |||
| DropIndex (deprecated syntax) | Drops an index from a property for all nodes having a certain label. | Y | Y | Deprecated | 
| DropIndex (new syntax) | Drops an index using its name. | Y | Y | |
| Drops a constraint using its name. | Y | Y | ||
| Drops a node key constraint from a set of properties for all nodes having a certain label. | Y | Y | Deprecated | |
| Drops an existence constraint from a property for all nodes having a certain label. | Y | Y | Deprecated | |
| Drops an existence constraint from a property for all relationships of a certain type. | Y | Y | Deprecated | |
| Produces zero rows when an expression is guaranteed to produce an empty result. | ||||
| Drops a unique constraint from a property for all nodes having a certain label. | Y | Y | Deprecated | |
| For isolation purposes,  | Eager | |||
| Evaluates a grouping expression. | Eager | |||
| Eagerly loads all incoming data and discards it. | ||||
| Returns a single row with no columns. | Y | |||
| Traverses incoming or outgoing relationships from a given node. | ||||
| Finds all relationships between two nodes. | ||||
| Filters each row coming from the child operator, only passing through rows that evaluate the predicates to  | ||||
| Performs a nested loop. Yields rows from the left-hand operator and discards rows from the right-hand operator. | ||||
| Performs a nested loop. Tests for the absence of a pattern predicate in queries containing multiple pattern predicates. | ||||
| Performs a nested loop. Tests for the presence of a pattern predicate that is combined with other predicates. | ||||
| Performs a nested loop. Tests for the absence of a pattern predicate that is combined with other predicates. | ||||
| Performs a nested loop. Tests for the presence of a pattern predicate in queries containing multiple pattern predicates. | ||||
| Returns the first 'n' rows from the incoming input. | ||||
| Loads data from a CSV source into the query. | Y | |||
| Locks the start and end node when creating a relationship. | ||||
| Creates the node when failing to find the node. | Y | Y | ||
| Creates the relationship when failing to find the relationship. | Y | |||
| Reads one or more nodes by id from the node store. | Y | |||
| Fetches all nodes with a specific label from the node label index. | Y | |||
| Uses the count store to answer questions about node counts. | Y | |||
| Executes a hash join on node ids. | Eager | |||
| Examines all values stored in an index, searching for entries containing a specific string. | Y | |||
| Examines all values stored in an index, searching for entries ending in a specific string. | Y | |||
| Examines all values stored in an index, returning all nodes with a particular label having a specified property. | Y | |||
| Finds nodes using an index seek. | Y | |||
| Finds nodes using an index seek where the value of the property matches the given prefix string. | Y | |||
| Executes a left outer hash join. | Eager | |||
| Executes a right outer hash join. | Eager | |||
| Finds nodes using an index seek within a unique index. | Y | |||
| Finds nodes using an index seek within a unique index where the value of the property matches the given prefix string. | Y | |||
| Like  | ||||
| Like  | ||||
| Yields a single row with all columns set to  | ||||
| Traverses relationships from a given node, producing a single row with the relationship and end node set to  | ||||
| Traverses all relationships between two nodes, producing a single row with the relationship and end node set to  | ||||
| Sorts a row by multiple columns if there is already an ordering. | ||||
| Returns the first 'n' rows sorted by multiple columns if there is already an ordering. | ||||
| Calls a procedure. | ||||
| Prepares the result so that it is consumable by the user. | ||||
| Projects the start and end node of a relationship. | ||||
| Evaluates a set of expressions, producing a row with the results thereof. | Y | |||
| Uses the count store to answer questions about relationship counts. | Y | |||
| Deletes labels from a node. | Y | |||
| Performs a nested loop. Executes a pattern expression or pattern comprehension. | ||||
| Performs a nested loop. Tests for the absence of a pattern predicate if an expression predicate evaluates to  | ||||
| Performs a nested loop. Tests for the presence of a pattern predicate if an expression predicate evaluates to  | ||||
| Performs a nested loop. Tests for the presence of a pattern predicate. | ||||
| Sets labels on a node. | Y | |||
| Sets properties from a map on a node. | Y | |||
| Sets a property on a node or relationship. | Y | |||
| Sets properties from a map on a relationship. | Y | |||
| Skips 'n' rows from the incoming rows. | ||||
| Sorts rows by a provided key. | Eager | |||
| Returns the first 'n' rows sorted by a provided key. | Eager | |||
| Solves triangular queries, such as the very common 'find my friend-of-friends that are not already my friend'. | ||||
| Reads one or more relationships by id from the relationship store. | Y | |||
| Concatenates the results from the right-hand operator with the results from the left-hand operator. | ||||
| Returns one row per item in a list. | ||||
| Executes a hash join on arbitrary values. | Eager | |||
| Traverses variable-length relationships from a given node. | ||||
| Finds all variable-length relationships between two nodes. | ||||
| Traverses variable-length relationships from a given node and only returns unique end nodes. |