1_1b_query_optimization_sil_7ed_ch16_SPLIT
1_1b_query_optimization_sil_7ed_ch16_SPLIT
These slides are a modified version of the slides provided with the book:
Database System Concepts - 7th Edition 16.2 ©Silberschatz, Korth and Sudarshan
Introduction
Query optimization: finding the “best” query execution plan (QEP) among the
many possible ones
User is not expected to write queries efficiently (DBMS optimizer takes care of that)
Alternative ways to execute a given query – 2 levels
Equivalent relational algebra expressions
Different implementation choices for each relational algebra operation
Algorithms, indices, coordination between successive operations, …
Database System Concepts - 7th Edition 16.3 ©Silberschatz, Korth and Sudarshan
Introduction
Query optimization: finding the “best” query execution plan (QEP) among the
many possible ones
User is not expected to write queries efficiently (DBMS optimizer takes care of that)
Alternative ways to execute a given query – 2 levels
Equivalent relational algebra expressions
Different implementation choices for each relational algebra operation
Algorithms, indices, coordination between successive operations, …
INSTR(i_id, name, dept_name, ...) The name of all instructors in the department of Music
COURSE(c_id, title, ...) together with the titles of all courses they teach
TEACHES(i_id, c_id, ...)
Database System Concepts - 7th Edition 16.4 ©Silberschatz, Korth and Sudarshan
Introduction
Query optimization: finding the “best” query execution plan (QEP) among the
many possible ones
User is not expected to write queries efficiently (DBMS optimizer takes care of that)
Alternative ways to execute a given query – 2 levels
Equivalent relational algebra expressions
Different implementation choices for each relational algebra operation
Algorithms, indices, coordination between successive operations, …
INSTR(i_id, name, dept_name, ...) The name of all instructors in the department of Music
COURSE(c_id, title, ...) together with the titles of all courses they teach
TEACHES(i_id, c_id, ...)
Database System Concepts - 7th Edition 16.5 ©Silberschatz, Korth and Sudarshan
Introduction
Query optimization: finding the “best” query execution plan (QEP) among the
many possible ones
User is not expected to write queries efficiently (DBMS optimizer takes care of that)
Alternative ways to execute a given query – 2 levels
Equivalent relational algebra expressions
Different implementation choices for each relational algebra operation
Algorithms, indices, coordination between successive operations, …
INSTR(i_id, name, dept_name, ...) The name of all instructors in the department of Music
COURSE(c_id, title, ...) together with the titles of all courses they teach
TEACHES(i_id, c_id, ...)
Find out how to view query execution plans on your favorite database
Database System Concepts - 7th Edition 16.7 ©Silberschatz, Korth and Sudarshan
Introduction (Cont.)
These slides are a modified version of the slides provided with the book:
Database System Concepts - 7th Edition 16.10 ©Silberschatz, Korth and Sudarshan
Equivalence Rules
1. Conjunctive selection operations can be deconstructed into a
sequence of individual selections.
σ θ ∧θ ( E) = σ θ (σ θ ( E))
1 2 1 2
Database System Concepts - 7th Edition 16.11 ©Silberschatz, Korth and Sudarshan
Equivalence Rules
1. Conjunctive selection operations can be deconstructed into a
sequence of individual selections.
σ θ ∧θ ( E) = σ θ (σ θ ( E))
1 2 1 2
2. Selection operations are commutative.
σ θ (σ θ ( E)) = σ θ (σ θ ( E))
1 2 2 1
Database System Concepts - 7th Edition 16.12 ©Silberschatz, Korth and Sudarshan
Equivalence Rules
1. Conjunctive selection operations can be deconstructed into a
sequence of individual selections.
σ θ ∧θ ( E) = σ θ (σ θ ( E))
1 2 1 2
2. Selection operations are commutative.
σ θ (σ θ ( E)) = σ θ (σ θ ( E))
1 2 2 1
Database System Concepts - 7th Edition 16.13 ©Silberschatz, Korth and Sudarshan
Equivalence Rules
1. Conjunctive selection operations can be deconstructed into a
sequence of individual selections.
σ θ ∧θ ( E) = σ θ (σ θ ( E))
1 2 1 2
2. Selection operations are commutative.
σ θ (σ θ ( E)) = σ θ (σ θ ( E))
1 2 2 1
Database System Concepts - 7th Edition 16.14 ©Silberschatz, Korth and Sudarshan
Equivalence Rules (Cont.)
5. Theta-join (and thus natural joins) operations are commutative.
E1 θ E2 = E2 θ E1
(but the order is important for efficiency)
Database System Concepts - 7th Edition 16.15 ©Silberschatz, Korth and Sudarshan
Equivalence Rules (Cont.)
5. Theta-join (and thus natural joins) operations are commutative.
E1 θ E2 = E2 θ E1
(but the order is important for efficiency)
Database System Concepts - 7th Edition 16.16 ©Silberschatz, Korth and Sudarshan
Equivalence Rules (Cont.)
5. Theta-join (and thus natural joins) operations are commutative.
E1 θ E2 = E2 θ E1
(but the order is important for efficiency)
Database System Concepts - 7th Edition 16.17 ©Silberschatz, Korth and Sudarshan
Equivalence Rules (Cont.)
(b) Complex selection distributes over theta join in the following manner:
σθ ∧θ2(E1 ⋈θ E2) = (σθ (E1)) ⋈θ (σθ (E2))
1 1 2
Database System Concepts - 7th Edition 16.18 ©Silberschatz, Korth and Sudarshan
Pictorial Depiction of Equivalence Rules
Database System Concepts - 7th Edition 16.19 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Database System Concepts - 7th Edition 16.20 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Definition (left outer join): the result of a left outer join T = R S is a super-set of the
result of the join T’ = R S in that all tuples in T’ appear in T. In addition, T preserve
those tuples that are lost in the join, by creating tuples in T that are filled with null
values
Database System Concepts - 7th Edition 16.21 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Definition (left outer join): the result of a left outer join T = R S is a super-set of the
result of the join T’ = R S in that all tuples in T’ appear in T. In addition, T preserve
those tuples that are lost in the join, by creating tuples in T that are filled with null
values
Database System Concepts - 7th Edition 16.22 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Definition (left outer join): the result of a left outer join T = R S is a super-set of the
result of the join T’ = R S in that all tuples in T’ appear in T. In addition, T preserve
those tuples that are lost in the join, by creating tuples in T that are filled with null
values
Database System Concepts - 7th Edition 16.23 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Definition (left outer join): the result of a left outer join T = R S is a super-set of the
result of the join T’ = R S in that all tuples in T’ appear in T. In addition, T preserve
those tuples that are lost in the join, by creating tuples in T that are filled with null
values
Database System Concepts - 7th Edition 16.24 ©Silberschatz, Korth and Sudarshan
Exercise
Disprove the equivalence
(R S) T = R (S T)
Definition (left outer join): the result of a left outer join T = R S is a super-set of the
result of the join T’ = R S in that all tuples in T’ appear in T. In addition, T preserve
those tuples that are lost in the join, by creating tuples in T that are filled with null
values
Database System Concepts - 7th Edition 16.25 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
Database System Concepts - 7th Edition 16.26 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
R S T
A AR A AS A AT
1 1 2 1 1 1
Database System Concepts - 7th Edition 16.27 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
R S T
A AR A AS A AT
1 1 2 1 1 1
R S
A AR AS
1 1 null
Database System Concepts - 7th Edition 16.28 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
R S T
A AR A AS A AT
1 1 2 1 1 1
R S
A AR AS
1 1 null
(R S) T
A AR AS AT
1 1 null 1
Database System Concepts - 7th Edition 16.29 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
R S T
A AR A AS A AT
1 1 2 1 1 1
R S S T
A AR AS A AS AT
1 1 null 2 1 null
(R S) T
A AR AS AT
1 1 null 1
Database System Concepts - 7th Edition 16.30 ©Silberschatz, Korth and Sudarshan
Solution
Disprove the equivalence ( R S) T = R (S T)
R S T
A AR A AS A AT
1 1 2 1 1 1
R S S T
A AR AS A AS AT
1 1 null 2 1 null
(R S) T R (S T)
A AR AS AT A AR AS AT
1 1 null 1 1 1 null null
Database System Concepts - 7th Edition 16.31 ©Silberschatz, Korth and Sudarshan
Equivalence derivability and minimality
Database System Concepts - 7th Edition 16.32 ©Silberschatz, Korth and Sudarshan
Enumeration of Equivalent Expressions
Query optimizers use equivalence rules to systematically generate
expressions equivalent to the given one
Can generate all equivalent expressions as follows:
Repeat (starting from the set containing only the given expression)
apply all applicable equivalence rules on every sub-expression of
every equivalent expression found so far
add newly generated expressions to the set of equivalent
expressions
Until no new equivalent expressions are generated
The above approach is very expensive in space and time
Space: efficient expression-representation techniques
1 copy is stored for shared sub-expressions
Time: partial generation
Dynamic programming
Greedy techniques (select best choices at each step) E1 E2
Heuristics, e.g., single-relation operations
(selections, projections) are pushed inside (performed earlier)
Database System Concepts - 7th Edition 16.33 ©Silberschatz, Korth and Sudarshan
Estimating Statistics of Expression
Results
The Catalog
Size estimation
Selection
Join
Other operations (projection, aggregation, set operations, outer join)
These slides are a modified version of the slides provided with the book:
Database System Concepts - 7th Edition 16.35 ©Silberschatz, Korth and Sudarshan
Statistical Information for Cost Estimation
Statistics information is maintained in the Catalog
The catalog is itself stored in the database as relation(s)
It contains:
nr: number of tuples in a relation r
br: number of blocks containing tuples of r
lr: size of a tuple of r (in bytes)
fr: blocking factor of r – i.e., the number of tuples of r that fit into one block
V(A, r): number of distinct values that appear in r for set of attributes A
V(A, r) = the size of ∏A(r) – if A is a key, then V(A,r) = nr
Database System Concepts - 7th Edition 16.36 ©Silberschatz, Korth and Sudarshan
Histograms
Histogram on attribute age of relation person
5
50 3
40 4
frequency
30 3
20 1
10
Database System Concepts - 7th Edition 16.37 ©Silberschatz, Korth and Sudarshan
Selection Size Estimation
# of records that will satisfy the selection predicate (aka selection condition)
σA=v(r ) (we are assuming that v actually is present in A)
Database System Concepts - 7th Edition 16.38 ©Silberschatz, Korth and Sudarshan
Selection Size Estimation
# of records that will satisfy the selection predicate (aka selection condition)
σA=v(r ) (we are assuming that v actually is present in A)
nr / V(A,r) (no histogram, uniform distribution)
1 if A is key
Database System Concepts - 7th Edition 16.39 ©Silberschatz, Korth and Sudarshan
Selection Size Estimation
# of records that will satisfy the selection predicate (aka selection condition)
σA=v(r ) (we are assuming that v actually is present in A)
nr / V(A,r) (no histogram, uniform distribution)
1 if A is key
Database System Concepts - 7th Edition 16.40 ©Silberschatz, Korth and Sudarshan
Selection Size Estimation
# of records that will satisfy the selection predicate (aka selection condition)
σA=v(r ) (we are assuming that v actually is present in A)
nr / V(A,r) (no histogram, uniform distribution)
1 if A is key
v − min( A, r ) otherwise (no histogram, uniform distribution)
nr *
max( A, r ) − min( A, r )
Database System Concepts - 7th Edition 16.41 ©Silberschatz, Korth and Sudarshan
Selection Size Estimation
# of records that will satisfy the selection predicate (aka selection condition)
σA=v(r ) (we are assuming that v actually is present in A)
nr / V(A,r) (no histogram, uniform distribution)
1 if A is key
v − min( A, r ) otherwise (no histogram, uniform distribution)
nr *
max( A, r ) − min( A, r )
Database System Concepts - 7th Edition 16.42 ©Silberschatz, Korth and Sudarshan
Complex Selection Size Estimation
Conjunction E = σθ (r )
1 ∧ θ2 ∧ … ∧ θn
Database System Concepts - 7th Edition 16.43 ©Silberschatz, Korth and Sudarshan
Complex Selection Size Estimation
Conjunction E = σθ (r )
1 ∧ θ2 ∧ … ∧ θn
Database System Concepts - 7th Edition 16.44 ©Silberschatz, Korth and Sudarshan
Complex Selection Size Estimation
Conjunction E = σθ (r )
1 ∧ θ2 ∧ … ∧ θn
Database System Concepts - 7th Edition 16.45 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
Database System Concepts - 7th Edition 16.46 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
Database System Concepts - 7th Edition 16.47 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
Database System Concepts - 7th Edition 16.48 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
Database System Concepts - 7th Edition 16.49 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
Database System Concepts - 7th Edition 16.50 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
Database System Concepts - 7th Edition 16.51 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
lowest is more accurate estimation # of records = nr * ns / max{ V(A,r), V(A,s) }
Database System Concepts - 7th Edition 16.52 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
lowest is more accurate estimation # of records = nr * ns / max{ V(A,r), V(A,s) }
histograms can be used for more accurate estimations
histograms must be on join attributes, for both relations, and with same ranges
use values for each range of the histogram, instead of nr , ns , V(A,r), V(A,s), and then sum
estimations obtained for all ranges
Database System Concepts - 7th Edition 16.53 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
lowest is more accurate estimation # of records = nr * ns / max{ V(A,r), V(A,s) }
histograms can be used for more accurate estimations
histograms must be on join attributes, for both relations, and with same ranges
use values for each range of the histogram, instead of nr , ns , V(A,r), V(A,s), and then sum
estimations obtained for all ranges
if A is key for r, then # of records <= ns (and vice versa)
in addition, if A is not null in s, then # of records = ns (and vice versa)
Database System Concepts - 7th Edition 16.54 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
lowest is more accurate estimation # of records = nr * ns / max{ V(A,r), V(A,s) }
histograms can be used for more accurate estimations
histograms must be on join attributes, for both relations, and with same ranges
use values for each range of the histogram, instead of nr , ns , V(A,r), V(A,s), and then sum
estimations obtained for all ranges
if A is key for r, then # of records <= ns (and vice versa)
in addition, if A is not null in s, then # of records = ns (and vice versa)
(theta join) r ⋈θ s
Database System Concepts - 7th Edition 16.55 ©Silberschatz, Korth and Sudarshan
Join Size Estimation
# of records that will be included in the result
(cartesian product) r x s: # of records = nr * ns
(natural join on attribute A) r ⋈ s:
for each tuple tr of r there are in average ns / V(A,s) many tuples of s selected
thus, # of records = nr * ns / V(A,s)
by switching the role of r and s we get # of records = nr * ns / V(A,r)
lowest is more accurate estimation # of records = nr * ns / max{ V(A,r), V(A,s) }
histograms can be used for more accurate estimations
histograms must be on join attributes, for both relations, and with same ranges
use values for each range of the histogram, instead of nr , ns , V(A,r), V(A,s), and then sum
estimations obtained for all ranges
if A is key for r, then # of records <= ns (and vice versa)
in addition, if A is not null in s, then # of records = ns (and vice versa)
(theta join) r ⋈θ s
r ⋈θ s = σ θ ( r x s) use formulas for cartesian product and selection
Database System Concepts - 7th Edition 16.56 ©Silberschatz, Korth and Sudarshan
Size Estimation for Other Operations
projection (no duplications): # of records = V(A,r)
aggregation GγF (r) # of records = V(G,r)
set operations
between selections on same relation use formulas for selection
es.: σθ1(r) ∪ σθ2(r) = σθ1 ∨ θ2 (r)
r∪s # of records = nr + ns
r∩s # of records = min { nr , ns }
r–s # of records = nr
outer join
left outer join # of records = # of records for inner join + nr
right outer join # of records = # of records for inner join + ns
full outer join # of records = # of records for inner join + nr + ns
Database System Concepts - 7th Edition 16.57 ©Silberschatz, Korth and Sudarshan
Estimation for Number of Distinct Values
# distinct values in the result for expression E and attribute (or set of attributes) A: V(A,E)
Selection E = σθ (r)
V(A, E) is a specific value for some conditions
e.g., if condition θ is A=3 , then V(A, E) = 1
e.g., if condition θ is 3 < A <= 6, then V(A, E) = 3 (assuming domain of A is the integers)
condition A < v (or A > v, A >= v, … ) V(A,E) = V(A,r) * selectivity rate of the selection
otherwise V(A,E) = min { nE , V(A,r) }
Join E = r⋈s
A only contains attributes from r V(A,E) = min { nE , V(A,r) }
A only contains attributes from s V(A,E) = min { nE , V(A,s) }
A contains attributes A1 from r and attributes A2 from s
V(A,E) = min { nE , V(A1, r) * V(A2 – A1, s) , V(A2, s) * V(A1 – A2, r) }
Database System Concepts - 7th Edition 16.58 ©Silberschatz, Korth and Sudarshan
Choice of Evaluation Plans
Dynamic Programming for Choosing Evaluation Plans
These slides are a modified version of the slides provided with the book:
Database System Concepts - 7th Edition 16.60 ©Silberschatz, Korth and Sudarshan
Cost--Based Optimization
Cost
A big part of a cost-based optimizer (based on equivalence rules) is
choosing the “best” order for join operations
Consider finding the best join-order for r1 ⋈ r2 ⋈ . . . ⋈ rn.
There are (2(n – 1))!/(n – 1)! different join orders for above expression.
With n = 7, the number is 665280, with n = 10, the number is greater
than 17.6 billion!
No need to generate all the join orders. Exploiting some monotonicity
(optimal substructure property), the least-cost join order for any subset
of {r1, r2, . . ., rn} is computed only once.
Database System Concepts - 7th Edition 16.61 ©Silberschatz, Korth and Sudarshan
Cost--Based Optimization: An example
Cost
Consider finding the best join-order for r1 r2 r3 r4 r5
(2(n − 1))! 8 !
Number of possible different join orderings: = = 1680
(n − 1)! 4!
The least-cost join order for any subset of { r1, r2, r3, r4, r5 } is computed only once
Assume we want to compute N123/45 : number of possible different join orderings
where r1, r2, r3 sare grouped together, e.g.,
Database System Concepts - 7th Edition 16.62 ©Silberschatz, Korth and Sudarshan
Dynamic Programming in Optimization
To find best join tree (equivalently, best join order) for a set of n relations:
Recursively compute (and store) costs of best join orders for subsets
S’ and S \ S’. Choose the cheapest of the 2n – 2 alternatives
Base case for recursion: find best algorithm for scanning relation
Database System Concepts - 7th Edition 16.63 ©Silberschatz, Korth and Sudarshan
Join Order Optimization Algorithm
procedure findbestplan(S)
if (bestplan[S].cost ≠ ∞)
return bestplan[S]
// else bestplan[S] has not been computed earlier, compute it now
if (S contains only 1 relation)
set bestplan[S].plan and bestplan[S].cost based on the best way
of accessing S /* Using selections on S and indices on S */
else for each non-empty subset S1 of S such that S1 ≠ S
P1= findbestplan(S1)
P2= findbestplan(S - S1)
A = best algorithm for joining results of P1 and P2
cost = P1.cost + P2.cost + cost of A
if cost < bestplan[S].cost
bestplan[S].cost = cost
bestplan[S].plan = “execute P1.plan; execute P2.plan;
join results of P1 and P2 using A”
return bestplan[S]
Database System Concepts - 7th Edition 16.64 ©Silberschatz, Korth and Sudarshan
Cost of Optimization
With dynamic programming time complexity of optimization is O(3n).
With n = 10, this number is 59000 instead of 17.6 billion!
Space complexity is O(2n)
Better time performance when considering only left-deep join tree O(n 2n)
Space complexity remains at O(2n) (heuristic approach)
Database System Concepts - 7th Edition 16.65 ©Silberschatz, Korth and Sudarshan
Cost Based Optimization with Equivalence
Rules
Physical equivalence rules equates logical operations (e.g., join) to physical
ones (i.e., implementations – e.g., nested-loop join, merge join)
Relational algebra expression are converted into QEP with implementation details
Efficient optimizer based on equivalence rules depends on
A space efficient representation of expressions which avoids making
multiple copies of sub-expressions
Efficient techniques for detecting duplicate derivations of expressions
Dynamic programming or memoization techniques, which store the “best”
plan for a sub-expression the first time it is computed, and reuses in on
repeated optimization calls on same sub-expression
Cost-based pruning techniques that avoid generating all plans (greedy,
heuristics)
Database System Concepts - 7th Edition 16.66 ©Silberschatz, Korth and Sudarshan
Heuristic Optimization
Cost-based optimization is expensive, even with dynamic programming
Systems may use heuristics to reduce the number of possibilities
choices that must be considered
Heuristic optimization transforms the query-tree by using a set of rules
that typically (but not in all cases) improve execution performance:
Perform selection early (reduces the number of tuples)
Perform projection early (reduces the number of attributes)
Perform most restrictive selection and join operations (i.e. with
smallest result size) before other similar operations
Only consider left-deep join orders (particularly suited for pipelining
as only one input has to be pipelined, the other is a relation)
Database System Concepts - 7th Edition 16.67 ©Silberschatz, Korth and Sudarshan
Structure of Query Optimizers
Some systems use only heuristics, others combine heuristics with partial
cost-based optimization.
Many optimizers considers only left-deep join orders.
Plus heuristics to push selections and projections down the query
tree
Reduces optimization complexity and generates plans amenable to
pipelined evaluation.
Heuristic optimization used in some versions of Oracle:
Repeatedly pick “best” relation to join next
it obtains and compares n plans (each starting with one relation)
In each plan, pick the best next relation for the join
Database System Concepts - 7th Edition 16.68 ©Silberschatz, Korth and Sudarshan
End of Chapter
These slides are a modified version of the slides provided with the book: