Download presentation
Presentation is loading. Please wait.
1
Query Rewrite Starburst Model (IBM)
2
DB2 Query Optimizer (Starburst)
Control Flow Parsing and Semantic Checking Data Flow Query Graph Model Query Rewrite Plan Optimization Executable Plan Compile Time Run Time Query Evaluation System
3
Goal of Query Rewrite Make queries as declarative as possible:
Poorly expressed queries could force the optimizer into choosing suboptimal plans Perform natural heuristics For example, “predicate pushdown”
4
Components of Rewrite Engine
Rewrite rules (more later) Rule engine control strategies sequential (rules are processed sequentially) priority (higher priority rules are given a chance first) statistical (next rule is chosen randomly based on a user defined probability distribution budget to avoid spending too much time on rewrites, the processing stops at a consistent state of QGM when the budget is exhausted Search facility browses through QGM providing the context for the rules to work on
5
Problem How do we choose between competing incompatible transformations? Optimal solution: apply cost analysis and pick the transformation leading to a cheaper plan Practical solution (why?): generate multiple alternatives and send them to plan optimization phase (problems?)
6
Rewrite Rules: SELECT Merge
CREATE VIEW itpv AS (SELECT DISTINCT itp.itemn, pur.vendn FROM itp, pur WHERE itp.ponum = pur.ponum AND pur.odate > ’85’) SELECT itm.itmn, itpv.vendn FROM itm, itpv WHERE itm.itemn = itpv.itemn AND itm.itemn > ’01’ AND itm.itemn < ’20’ SELECT DISTINCT itm.itmn, pur.vendn FROM itm, itp, pur WHERE itp.ponum = pur.ponum AND itm.itemn = itpv.itemn AND pur.odate > ’85’ AND itm.itemn > ’01’ AND itm.itemn < ’20’ Speedup: 200 times
7
Rewrite Rules: Existential Subquery Merge
SELECT * FROM itp WHERE itm.itemn IN ( SELECT itl.itmn FROM itl WHERE itl.wkcen = ‘WK468’ AND itl.locan = ‘L’) SELECT DISTINCT itp.* FROM itp, itl WHERE itp.itmn = itl.itemn AND itl.wkcen = ‘WK468’ AND itl.locan = ‘L’ Speedup: 15 times
8
Rewrite Rules:Intersect to Exists
SELECT itemn FROM wor WHERE empno = ‘EMPN1279’ INTERSECT SELECT itmn FROM itl WHERE entry_time = ‘9773’ AND wkctr = ‘WK195’) SELECT DISTINCT itemn FROM wor, itl WHERE empno = ‘EMPN1279’ entry_time = ‘9773’ AND wkctr = ‘WK195’) AND itl.itmn = wor.itemn Speedup: 8 times
9
The Count Bug (cont.) parts(PNUM,QOH) supply(PNUM,QUAN,SHIPDATE)
Query: Find the part numbers of those parts whose quantities on hand equal the number of shipments of those parts before select PNUM from parts where QOH = ( select count(SHIPDATE) from supply where supply.PNUM = parts.PNUM and SHIPDATE < )
10
The Count Bug (cont.) select PNUM from parts
where QOH = ( select count(SHIPDATE) from supply where supply.PNUM = parts.PNUM and SHIPDATE < ) temp (SUPPNUM,CT) = (select PNUM, count(SHIPDATE) from supply where SHIPDATE < ) group by PNUM) select PNUM from parts, temp where parts.QOH = temp.CT and temp.PNUM = parts.PNUM
11
The Count Bug (cont.) Parts Supply PNUM QOH 3 6 10 1 8 PNUM QUAN
PNUM QUAN SHIPDATE 3 4 7-3-79 2 10 1 6-8-78 8 5 5-7-83 select PNUM from parts where QOH = ( select count(SHIPDATE) from supply where supply.PNUM = parts.PNUM and SHIPDATE < ) Result PNUM 10 8
12
The Count Bug (cont.) Parts Supply PNUM QOH 3 6 10 1 8 PNUM QUAN
PNUM QUAN SHIPDATE 3 4 7-3-79 2 10 1 6-8-78 8 5 5-7-83 Temp temp (SUPPNUM,CT) = (select PNUM, count(SHIPDATE) from supply where SHIPDATE < ) group by PNUM) Suppnum CT 3 2 10 1
13
The Count Bug (cont.) Parts Temp PNUM QOH 3 6 10 1 8 SUPPNUM CT 3 2 10
SUPPNUM CT 3 2 10 1 Result select PNUM from parts, temp where parts.QOH = temp.CT and temp.PNUM = parts.PNUM PNUM 10
14
The Count Bug – solution with outer joins
X A B Y B C E X Y A null B C E Null R S R=+S
15
The Count Bug – solution with outer joins
temp (SUPPNUM,CT) = (select parts.PNUM, count(SHIPDATE) from parts, supply where SHIPDATE < and parts.PNUM =+ supply.PNUM group by parts.PNUM) parts.PNUM =+ supply.PNUM (for SHIPDATE < ) Parts.PNUM Parts.QOH Supply.PNUM Supply.QUON Supply.SHIPDATE 3 6 4 7-3-79 2 10 1 6-8-78 8 null
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.