1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on...
-
Upload
lindsey-mcdonald -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on...
![Page 1: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/1.jpg)
1
Lecture 25
Friday, November 30, 2001
![Page 2: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/2.jpg)
2
Outline
• Query execution – Two pass algorithms based on indexes (6.7)
• Query optimization– From SQL to logical plans (7.3)– Algebraic laws (7.2)– Choosing an order for Joins (7.6)
![Page 3: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/3.jpg)
3
Indexed Based Algorithms
• Recall that in a clustered index all tuples with the same value of the key are clustered on as few blocks as possible
• Note: book uses another term: “clustering index”. Difference is minor…
a a a a a a a a a a
![Page 4: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/4.jpg)
4
Index Based Selection
• Selection on equality: a=v(R)
• Clustered index on a: cost B(R)/V(R,a)
• Unclustered index on a: cost T(R)/V(R,a)
![Page 5: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/5.jpg)
5
Index Based Selection
• Example:
• Table scan:– If R is clustered: B(R) = 2,000 I/Os– If R is unclustered: T(R) = 100,000 I/Os
• Index based selection:– If index is clustered: B(R)/V(R,a) = 100– If index is unclustered: T(R)/V(R,a) = 5,000
• Notice: when V(R,a) is small, then unclustered index is useless
B(R) = 2000T(R) = 100,000V(R, a) = 20
B(R) = 2000T(R) = 100,000V(R, a) = 20
cost of a=v(R) = ?cost of a=v(R) = ?
![Page 6: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/6.jpg)
6
Index Based Join
• R S
• Assume S has an index on the join attribute
• Iterate over R, for each tuple fetch corresponding tuple(s) from S
• Assume R is clustered. Cost:– If index is clustered: B(R) + T(R)B(S)/V(S,a)– If index is unclustered: B(R) + T(R)T(S)/V(S,a)
![Page 7: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/7.jpg)
7
Index Based Join
• Assume both R and S have a sorted index (B+ tree) on the join attribute
• Then perform a merge join – called zig-zag join
• Cost: B(R) + B(S)
![Page 8: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/8.jpg)
8
Example
Product(pname, maker), Company(cname, city)
Clustered index: Product.pname, Company.cname
Unclustered index: Product.maker, Company.city
Select Product.pnameFrom Product, CompanyWhere Product.maker=Company.cname and Company.city = “Seattle”
Select Product.pnameFrom Product, CompanyWhere Product.maker=Company.cname and Company.city = “Seattle”
![Page 9: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/9.jpg)
9
• Case 1: V(Company, city) T(Company) V(Product, maker) T(Product)
• Case 2: V(Company, city) << T(Company) V(Product, maker) T(Product)
• Case 3: V(Company, city) << T(Company) V(Product, maker) << T(Product)
city=“Seattle”
Product Company
maker=cname
T(Company) = 5,000 B(Company) = 500 M = 100T(Product) = 100,000 B(Product) = 1,000
T(Company) = 5,000 B(Company) = 500 M = 100T(Product) = 100,000 B(Product) = 1,000
V(Company,city) = 2,000V(Product,maker) = 20,000
V(Company,city) = 2,000V(Product,maker) = 20,000
V(Company,city) = 20V(Product,maker) = 20,000
V(Company,city) = 20V(Product,maker) = 20,000
V(Company,city) = 20V(Product,maker) = 100
V(Company,city) = 20V(Product,maker) = 100
![Page 10: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/10.jpg)
10
• Case 1:– Index-based selection: T(Company) / V(Company, city) – Index-based join: x T(Product) / V(Product, maker)
• Case 3:– Table scan and selection on Company: B(Company) sorted !!!– Merge-join with Product: + B(Product)
• Case 2:– Plan 1 costs 250 x 5 = 1250, Plan 3 costs 1,500– Plan 1 is better
T(Company) / V(Company, city) x T(Product) / V(Product, maker)
= 2.5 x 5
13
T(Company) / V(Company, city) x T(Product) / V(Product, maker)
= 2.5 x 5
13
B(Company) + B(Product) = 1,500B(Company) + B(Product) = 1,500
![Page 11: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/11.jpg)
11
Optimization
• Start: convert SQL to Logical Plan• Algebraic laws:
– foundation for every optimization
• Two approaches to optimizations:– Heuristics: apply laws that seem to result in cheaper
plans
– Cost based: estimate size and cost of intermediate results, search systematically for best plan
![Page 12: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/12.jpg)
12
Converting from SQL to Logical Plans
Select a1, …, anFrom R1, …, RkWhere C
Select a1, …, anFrom R1, …, RkWhere C
a1,…,an( C(R1 R2 … Rk))
a1,…,an( b1, …, bm, aggs ( C(R1 R2 … Rk)))
Select a1, …, anFrom R1, …, RkWhere CGroup by b1, …, bl
Select a1, …, anFrom R1, …, RkWhere CGroup by b1, …, bl
![Page 13: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/13.jpg)
13
Converting Nested Queries
Select distinct product.nameFrom productWhere product.maker in (Select company.name From company where company.city=“Seattle”)
Select distinct product.nameFrom productWhere product.maker in (Select company.name From company where company.city=“Seattle”)
Select distinct product.nameFrom product, companyWhere product.maker = company.name AND company.city=“Seattle”
Select distinct product.nameFrom product, companyWhere product.maker = company.name AND company.city=“Seattle”
![Page 14: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/14.jpg)
14
Converting Nested Queries
Select distinct x.name, x.makerFrom product xWhere x.color= “blue” AND x.price >= ALL (Select y.price From product y Where x.maker = y.maker AND y.color=“blue”)
Select distinct x.name, x.makerFrom product xWhere x.color= “blue” AND x.price >= ALL (Select y.price From product y Where x.maker = y.maker AND y.color=“blue”)
How do we convert this one to logical plan ?
![Page 15: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/15.jpg)
15
Converting Nested Queries
Select distinct x.name, x.makerFrom product xWhere x.color= “blue” AND x.price < SOME (Select y.price From product y Where x.maker = y.maker AND y.color=“blue”)
Select distinct x.name, x.makerFrom product xWhere x.color= “blue” AND x.price < SOME (Select y.price From product y Where x.maker = y.maker AND y.color=“blue”)
Let’s compute the complement first:
![Page 16: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/16.jpg)
16
Converting Nested Queries
Select distinct x.name, x.makerFrom product x, product yWhere x.color= “blue” AND x.maker =
y.maker AND y.color=“blue” AND x.price < y.price
Select distinct x.name, x.makerFrom product x, product yWhere x.color= “blue” AND x.maker =
y.maker AND y.color=“blue” AND x.price < y.price
This one becomes a SFW query:
This returns exactly the products we DON’T want, so…
![Page 17: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/17.jpg)
17
Converting Nested Queries
(Select x.name, x.maker From product x Where x.color = “blue”)
EXCEPT
(Select x.name, x.maker From product x, product y Where x.color= “blue” AND x.maker = y.maker AND y.color=“blue” AND x.price < y.price)
(Select x.name, x.maker From product x Where x.color = “blue”)
EXCEPT
(Select x.name, x.maker From product x, product y Where x.color= “blue” AND x.maker = y.maker AND y.color=“blue” AND x.price < y.price)
![Page 18: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/18.jpg)
18
Algebraic Laws
• Commutative and Associative Laws– R U S = S U R, R U (S U T) = (R U S) U T– R ∩ S = S ∩ R, R ∩ (S ∩ T) = (R ∩ S) ∩ T– R S = S R, R (S T) = (R S) T
• Distributive Laws– R (S U T) = (R S) U (R T)
![Page 19: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/19.jpg)
19
Algebraic Laws
• Laws involving selection:– C AND C’(R) = C( C’(R)) = C(R) ∩ C’(R)
– C OR C’(R) = C(R) U C’(R)
– C (R S) = C (R) S • When C involves only attributes of R
– C (R – S) = C (R) – S
– C (R U S) = C (R) U C (S)
– C (R ∩ S) = C (R) ∩ S
![Page 20: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/20.jpg)
20
Algebraic Laws
• Example: R(A, B, C, D), S(E, F, G)– F=3 (R S) = ?
– A=5 AND G=9 (R S) = ?
D=E
D=E
![Page 21: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/21.jpg)
21
Algebraic Laws
• Laws involving projections– M(R S) = N(P(R) Q(S))
• Where N, P, Q are appropriate subsets of attributes of M
– M(N(R)) = M,N(R)
• Example R(A,B,C,D), S(E, F, G)– A,B,G(R S) = ? (?(R) ?(S))
D=ED=E
![Page 22: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/22.jpg)
22
Heuristic Based Optimizations
• Query rewriting based on algebraic laws
• Result in better queries most of the time
• Heuristics number 1:– Push selections down
• Heuristics number 2:– Sometimes push selections up, then down
![Page 23: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/23.jpg)
23
Predicate Pushdown
Product Company
maker=name
price>100 AND city=“Seattle”
pname
Product Company
maker=name
price>100
pname
city=“Seattle”
The earlier we process selections, less tuples we need to manipulatehigher up in the tree (but may cause us to loose an important orderingof the tuples, if we use indexes).
![Page 24: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/24.jpg)
24
Predicate Pushdown
Select y.name, Max(x.price)From product x, company yWhere x.maker = y.name GroupBy y.nameHaving Max(x.price) > 100
Select y.name, Max(x.price)From product x, company yWhere x.maker = y.name GroupBy y.nameHaving Max(x.price) > 100
Select y.name, Max(x.price)From product x, company yWhere x.maker=y.name and x.price > 100GroupBy y.nameHaving Max(x.price) > 100
Select y.name, Max(x.price)From product x, company yWhere x.maker=y.name and x.price > 100GroupBy y.nameHaving Max(x.price) > 100
• For each company, find the maximal price of its products.•Advantage: the size of the join will be smaller.• Requires transformation rules specific to the grouping/aggregation operators.• Won’t work if we replace Max by Min.
![Page 25: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/25.jpg)
25
Pushing predicates up
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price
Bargain view V1: categories with some price<20, and the cheapest price
![Page 26: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/26.jpg)
26
Query Rewrite:Pushing predicates up
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price AND V1.p < 20
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price AND V1.p < 20
Bargain view V1: categories with some price<20, and the cheapest price
![Page 27: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/27.jpg)
27
Query Rewrite:Pushing predicates up
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V1 ASSelect x.category, Min(x.price) AS pFrom product xWhere x.price < 20GroupBy x.category
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name AND V1.p < 20
Create View V2 ASSelect y.name, x.category, x.priceFrom product x, company yWhere x.maker=y.name AND V1.p < 20
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price AND V1.p < 20
Select V2.name, V2.priceFrom V1, V2Where V1.category = V2.category and V1.p = V2.price AND V1.p < 20
Bargain view V1: categories with some price<20, and the cheapest price
![Page 28: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/28.jpg)
28
Cost-based Optimizations
Unit of Optimization
• Select-project-join– Push selections down, pull projections up
• Hence: remains to choose the join order
• This is the main focus of the cost-based optimizer
![Page 29: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/29.jpg)
29
Join Trees
• R1 R2 …. Rn• Join tree:
• A join tree represents a plan. An optimizer needs to inspect many (all ?) join trees
R3 R1 R2 R4
![Page 30: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/30.jpg)
30
Types of Join Trees
• Left deep:
R3 R1
R5
R2
R4
![Page 31: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/31.jpg)
31
Types of Join Trees
• Bushy:
R3
R1
R2 R4
R5
![Page 32: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/32.jpg)
32
Types of Join Trees
• Right deep:
R3
R1R5
R2 R4
![Page 33: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/33.jpg)
33
Problem
• Given: a query R1 R2 … Rn
• Assume we have a function cost() that gives us the cost of every join tree
• Find the best join tree for the query
![Page 34: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/34.jpg)
34
Dynamic Programming
• Idea: for each subset of {R1, …, Rn}, compute the best plan for that subset
• In increasing order of set cardinality:– Step 1: for {R1}, {R2}, …, {Rn}
– Step 2: for {R1,R2}, {R1,R3}, …, {Rn-1, Rn}
– …
– Step n: for {R1, …, Rn}
• A subset of {R1, …, Rn} is also called a subquery
![Page 35: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/35.jpg)
35
Dynamic Programming
• For each subquery Q ⊆ {R1, …, Rn} compute the following:– Size(Q)– A best plan for Q: Plan(Q)– The cost of that plan: Cost(Q)
![Page 36: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/36.jpg)
36
Dynamic Programming
• Step 1: For each {Ri} do:– Size({Ri}) = B(Ri)– Plan({Ri}) = Ri– Cost({Ri}) = (cost of scanning Ri)
![Page 37: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/37.jpg)
37
Dynamic Programming
• Step i: For each Q ⊆ {R1, …, Rn} of cardinality i do:– Compute Size(Q) (later…)– For every pair of subqueries Q’, Q’’
s.t. Q = Q’ U Q’’compute cost(Plan(Q’) Plan(Q’’))
– Cost(Q) = the smallest such cost– Plan(Q) = the corresponding plan
![Page 38: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/38.jpg)
38
Dynamic Programming
• Return Plan({R1, …, Rn})
![Page 39: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/39.jpg)
39
Dynamic Programming
To illustrate, we will make the following simplifications:
• Cost(P1 P2) = Cost(P1) + Cost(P2) + size(intermediate result(s))
• Intermediate results:– If P1 = a join, then the size of the intermediate result is
size(P1), otherwise the size is 0– Similarly for P2
• Cost of a scan = 0
![Page 40: 1 Lecture 25 Friday, November 30, 2001. 2 Outline Query execution –Two pass algorithms based on indexes (6.7) Query optimization –From SQL to logical.](https://reader035.fdocuments.net/reader035/viewer/2022081603/56649f1e5503460f94c3582e/html5/thumbnails/40.jpg)
40
Dynamic Programming
• Example:• Cost(R5 R7) = 0 (no intermediate results)• Cost((R2 R1) R7)
= Cost(R2 R1) + Cost(R7) + size(R2 R1) = size(R2 R1)