Saturday 2 November 2024

Logical Operator in execution plan in SQL server

Logical Operators in an execution plan represent the high-level, logical steps SQL Server takes to satisfy a query. They define what SQL Server needs to do (like a join, filter, or aggregation), while the Physical Operators define how SQL Server actually performs those actions. Logical operators are abstract descriptions of operations, helping understand SQL Server’s approach to processing data.

Types of Logical Operators in SQL Server

Ø  Join Operators: Used when SQL Server needs to combine rows from two tables based on specific conditions:

o   Inner Join: Returns only the rows where there is a match in both tables.

o   Left Outer Join: Returns all rows from the left table and matched rows from the right table; if there’s no match, NULL is returned from the right table.

o   Right Outer Join: Returns all rows from the right table and matched rows from the left; NULL is returned from the left if no match is found.

o   Full Outer Join: Returns all rows when there’s a match in either table; fills in NULL values when no match exists in one table.

o   Cross Join: Combines all rows from two tables (Cartesian product).

Ø  Set Operators :Used for combining results from multiple queries or tables:

o   Union: Combines results from two or more queries and removes duplicates.

o   Union All: Combines results from two or more queries without removing duplicates.

o   Intersect: Returns only the rows common to both queries.

o   Except: Returns rows from the first query that aren’t in the second query.

Ø  Logical Scan Operators: Describes how SQL Server logically accesses data:

o   Table Scan: Reads all rows from a table without filtering.

o   Index Scan: Reads all rows from an index, typically used when most rows satisfy the query criteria.

Ø  Logical Seek Operators : Used when SQL Server accesses specific rows in an index:

o   Index Seek: Finds specific rows using an index key, which is faster than scanning the entire table.

o   Range Seek: Accesses rows within a specific range of index values.

Ø  Filter Operator:  Applies criteria from the WHERE or HAVING clause to limit rows returned by a query. This logical operator identifies rows that meet specified conditions.

Ø  Aggregation Operators : Used to calculate summary values such as sums, averages, counts, etc.:

o   Stream Aggregate: Computes aggregates on sorted input (e.g., SUM, COUNT, AVG).

o   Hash Aggregate: Computes aggregates on unsorted input by creating hash tables for each group.

Ø  Compute Scalar Operator: Calculates expressions for each row, like performing arithmetic operations, casting data types, or computing scalar functions in a query.

Ø  Logical Sort Operator: Sorts rows based on one or more columns as specified by an ORDER BY clause. Sorting can also be required for certain operations, such as Merge Join or Stream Aggregate.

Ø  Concatenation Operator: Combines multiple sets of rows from different sources. Often seen in UNION ALL queries or queries where data from multiple tables needs to be combined without removing duplicates.

Ø  Spool Operators : Temporarily stores rows to reuse them in the same query execution:

o   Index Spool: Similar to a table spool but works with indexes.

o   Lazy Spool: Reads rows only when needed, reducing memory usage.

o   Table Spool: Stores a subset of rows for reuse, which can improve performance in certain situations.

Ø  Parallelism Operators : Distributes data across multiple processors to execute parts of a query in parallel, improving performance on large datasets:

o   Distribute Streams: Divides data into separate streams for parallel processing.

o   Repartition Streams: Reorganizes data between processors based on a new distribution key.

o   Gather Streams: Combines results from multiple streams into a single output.

Ø  Segment and Sequence Operators

o   Segment: Defines data boundaries for further operations, useful in OVER clause operations.

o   Sequence: Ensures sequential execution of operations in a query, often used in queries with ordered results or multiple modifications.

No comments:

Post a Comment

If you have any doubt, please let me know.

Popular Posts