View
229
Download
1
Embed Size (px)
Citation preview
Initial QGM
Q1.CDept=‘mgmt’And
Q1.Grade>=Q2.$1
took
Max
took
Q1 Q2
Q3SELECT Grade FROM took Q3 WHERE Q3.CName=Q1.CName
SELECTMax(Grade) AS GradeFROM Child Q4
Q4
SELECT Q1.SNameFROM took Q1, temp1 Q2WHERE Q1.CDept = ‘mgmt’ AND Q1.Grade >= Q2.$1
temp1SName,CName,CDept,Grade
Grade
CName,Grade
Grade
Performing Feed for the topmost Box
Q1.Grade>=Q2.$1
CDept=‘mgmt’
Max
Q1 Q2
supp
took
distinct
Magic_1
SELECT DISTINCT CName FROM supp
SELECT MAX (Grade) AS GradeFROM Child
SName,CName,CDept,Grade
SName,CName,Grade
SELECT Q1.SNameFROM took Q1, temp1 Q2WHERE Q1.Grade >= Q2.$1
temp1Q4
Grade
Q1.Grade>=Q2.$1
CDept=‘mgmt’
Max
Q1 Q2
supp
took
distinct
Magic_1
DCOBox
SELECT Q4.cName, Q5.$1FROM Magic_1 Q4, temp1 Q5
Q3.CName=Q1.CNameCIBox
SELECT Q3.Grade FROM DCOBox Q3 WHERE Q3.CName = Q1.CName
Q4 Q5
Q3
CName
SELECT Q1.SNameFROM took Q1, CIBox Q2WHERE Q1.Grade >= Q2.$1
SName,CName,Grade
SName,CName,CDept,Grade
CName CName,
Grade
Grade
temp1 Q6
Can merge the C1Box and the topmost box into one box as every tuple in the topmost box joins with atmost one tuple in the C1Box
Q1.Grade>=Q2.GradeQ1.cName=Q2.cName
CDept=‘mgmt’
Max
Q1 Q2
supp
took
distinct
Magic_1
DCOBoxSELECT Q4.cName,Q5.$1FROM Magic_1 Q4, temp1 Q5
Q4 Q5
CName
SELECT Q1.sName FROM supp Q1, DCOBox Q2WHERE Q1.cName=Q2.cName
AND Q1.Grade>=Q2.Grade
temp1
SName,CName,CDept,Grade
SName,CName,Grade
CName
CName,
Grade
Grade
Q6
Starting Point for the Aggregation Box
Max
distinct
Magic_1
DCOBox Q4 Q5
Q4.CName=Q3.CNameQ3
took
CName, Grade
SELECT Q4.CName, Q5.$1 AS GradeFROM Magic_1 Q4, temp1 Q5
temp1CName
CName,Grade
Grade
Q6 SELECTMax(Grade) AS GradeFROM Child Q6
SELECT Grade FROM took Q3 WHERE Q3.CName=Q1.CName
Grade
Performing Feed for the aggregate Box
Max
distinct
Magic_1
DCOBox Q4 Q5
Q1.CName=Q3.CNameQ3
took
CName, Grade
SELECT Q4.CName,Q5.$1From Magic_1 Q4, temp1 Q5
Q7.cName=Q4.cNameCIBox
Q7
DCOBox Q8 Q9
distinct
Magic_2
CName
CName
CName
CName, Grade
CName, Grade
Grade
Grade
temp1
SELECT Grade FROM DCOBox Q7 WHERE Q7.CName = Q4.CName
SELECTMax(Grade) AS GradeFROM Child Q6
Q6
Grade
SELECT Grade FROM took Q3 WHERE Q3.CName = Q1.CName
SELECT Q8.CName, Q9.Grade FROM Magic_2 Q8, Child Q9
Performing Absorb for the aggregate Box – introduce the
Group By and the LOJ
Max
distinct
Magic_1
DCOBox Q4 Q5
Q1.cName=Q3.cNameQ3
took
CName, Grade
CIBoxQ7
DCOBox Q8Q9
distinct
Magic_2
SELECT CName, MAX (Grade) AS GradeFROM Child Q6GROUPBY Q6.CName
Q6
CName
CName
CName
CName, Grade
CName, Grade
Grade
CName, Grade
CName, Grade
SELECT Q4.CName, Q5.Grade FROM Magic_1 Q4 LOJ temp1 Q5 ON CName
temp1
The LOJ is unnecessary here, and the C1Box is also unnecessary.
Max
Q1.CName=Q3.CNameQ3
took
DCOBox Q8 Q9
distinct
Magic_2
Q6
Q1.Grade>=Q2.GradeQ1.CName=Q2.CName
SELECT CName, MAX (Grade) AS GradeFROM Child Q6GROUPBY Q6.CName
CName, Grade
CName, Grade
CName, Grade
GradeCName
SELECT Q1.SNameFROM supp Q1, temp1 Q2WHERE Q1.CName = Q2.CName AND Q1.Grade >= Q2.Grade
Q2Q1
temp1
Starting Point for the bottommost SPJ Box
Q8.CName=Q3.CNameQ3
took
DCOBox Q8 Q9
distinct
Magic_2
CName
Grade
CName, Grade
CName, Grade
SELECT Grade FROM took Q3 WHERE Q3.CName = Q1.CName
SELECT Q8.CName, Q9.Grade FROM Magic_2 Q8, temp2 Q9
temp2
Performing Absorb for the SPJ Box
Q10.CName=Q3.CNameQ3
took
DCOBox Q8 Q9
distinct
Magic_2
Q10 SELECT Q3.CName, Q3.Grade FROM Magic_2 Q10, took Q3 WHERE Q3.CName = Q10.CName
SELECT Q9.CName, Q9.Grade FROM temp2 Q9
CName
CName
CName, Grade
CName, Grade
CName, Grade
temp2
Remove unnecessary DCOBox
Q10.cName=Q3.cNameQ3
took
distinct
Magic_2
Q10
CName, Grade
CName, GradeCName
SELECT Q3.CName, Q3.Grade FROM Magic_2 Q10, took Q3 WHERE Q3.CName = Q10.CName
The Final QGM
Q10.CName=Q3.CNameQ3
took
distinct
Magic_2
Q10
CName, Grade
Max Q6
Q1.Grade>=Q2.GradeQ1.CName=Q2.CName
CDept=‘mgmt’
took
SELECT Q3.CName, Q3.Grade FROM Magic_2 Q10, took Q3 WHERE Q3.CName = Q10.CName
CName, GradeCName
CName
SELECT CName, MAX (Grade) AS GradeFROM Child Q6GROUPBY Q6.CName
SName,CName,CDept,Grade
SName,CName,Grade
CName, Grade
SELECT Q1.sName FROM supp Q1, temp1 Q2WHERE Q1.CName=Q2.CName AND Q1.Grade>=Q2.Grade
Q2Q1
temp1