Dive into the Query Optimizer
Dive into the Query Optimizer: Undocumented Insight
Benjamin Nevarez
Blog: benjaminnevarez.com
Twitter: @BenjaminNevarez
About the Speaker
Benjamin Nevarez
Author of “Inside the SQL
Server Query Optimizer” and
“SQL Server 2014 Query Tuning
& Optimization”
SQL Server 2012 Internals
Working with SQL Server for
15 years
PASS Summit/SQL Server
Connections speaker
Dive into the Query Optimizer
SQL is a high-level declarative language
Dive into the Query Optimizer
Query processing steps
Dive into the Query Optimizer
The Optimization Process
Parsing / Binding (before optimization)
Simplification
Initial set of Join Orders
Trivial Plan
Optimization Phases
search 0
search 1
search 2
Parsing / Binding
Parsing first makes sure that the T-SQL query has a valid syntax
Binding is mostly concerned with name resolution
Uses the query information to build a tree of relational operators
Demo
Logical Trees
Simplification
Reduces the query tree into a simpler form in order to make the
optimization process easier
Some of the simplifications include:
• Redundant inner and outer joins may be removed. A typical example
is the Foreign Key Join elimination
• Filters in WHERE clauses are pushed down in the query tree in order
to enable early data filtering (predicate pushdown)
• Contradictions are detected and remove
Demo
Simplification
Transformation Rules
Used to explore the search space
Exploration rules (logical transformation rules)
Generate logical equivalent alternatives
Commutativity
A join B – > B join A
Associativity
(A join B) join C – > A join (B join C)
Implementation rules (physical transformation rules)
Obtain physical alternatives
Join to Sort Merge Join
A join B – > A Merge Join B
Transformation Rules
Applying transformations does not necessarily reduce the cost of the
generated alternatives
Cost will be estimated later (only physical alternatives are costed)
Demo
Transformation Rules
The Memo
Search data structure that is used to store the alternatives which are
generated and analyzed by the Query Optimizer
A new memo structure is created for each optimization
The Query Optimizer copies the original query tree's logical expressions
into the memo structure
The Memo
After Optimization
Demo
The Memo
Optimization Phases – Full Optimization
Search 0, Transaction Processing phase
Search 1, Quick Plan phase
Search 2, Full Optimization
Demo
The Optimization Phases
Dive into the Query Optimizer
Thank You!