数据库-查询树的优化(比较优秀的课件)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cpno'5'
C
A , A ,, A , B , B ,, B ( E1 E2 )
SC
1 2 n 1 2 m
A , A ,, A ( E1 ) B , B ,, B ( E2 )
1 2 n 1 2 m
第三步(4):第二次下放后:
Sname
SC.SnoS .Sno
优化算法:
1. 2. 3. 4.
5.
利用规则4分解选择运算。 利用规则4~9把选择运算尽量移到叶端。 利用规则3,5,10,11把投影运算尽量移到叶端。 利用规则3~5把选择和投影的串接合并成单个选 择、单个投影或一个选择后跟一个投影的形式。 使尽可能多的选择和投影同时执行。 分组。双目运算和他的直系祖先为一组;双目运 算后代直道叶子全是单目运算时并入改组。笛卡 儿积的后代中若不是与之可以合并的自然连接的 等值选择时,其后代单独分为一组。
注:先做投影可以减少读取写入的数据,因此减少磁盘IO 量,从而提高了效率。
查找所有学生可能的选课对:
Sname,Cname ( S C ) Sname ( S ) Cname (C )
11. 投影与并的分配律
设E1和E2有相同的属性名,则:
A , A ,, A ( E1 E2 )
自然连接
R S R. AS .B ( R S )
2. 连接、笛卡尔积的结合率 设E1,E2,E3是关系代数表达式,F1和F2是 连接运算的条件,则有:
( E1 E2 ) E3 E1 ( E2 E3 )
( E1 E2 ) E3 E1 ( E2 E3 )
第二步(2):下放完成后:
Sname
SC.SnoS .Sno
×
C .CnoSC .Cno
×
S
Cpno'5'
C
SC
第三步:尽量下放投影运算
Sname
SC.SnoS .Sno
×
E
C .CnoSC .Cno
×
S
Cpno'5'
C
SC
Sname ( SC .SnoS .Sno ( E ) Sname ( SC .SnoS .Sno ( SC .Sno,S .Sno, Sname ( E ))
E1 E2Baidu Nhomakorabea E2 E1
E1 E2 E2 E1
E1 E2 E2 E1
F F
笛卡尔积
R S { tr t s (tr R ) (t s S )} S R { tstr (tr R ) (t s S )}
Sage19 ( S1 S2 ) Sage19 ( S1 ) Sage19 ( S2 )
优化规则:
选择运算尽可能先做。 投影运算和选择运算同时进行。 把投影运算同其前后的 双目运算结合执行。 选择运算和笛卡儿积运算结合成连接运算。 找出公共子表达式,避免重复运算。
求所有的学生姓名:
Sname ( Sname,Sage ( S )) Sname ( S )
4. 选择的串接定律
F ( F ( E )) F F ( E )
1 2 1 2
E是关系代数表达式,F1和F2是选 择条件。选择的串接定律说明选择条件 可以合并,这样一次就可以检查全部的 条件。
( E1 E2 ) E3 E1 ( E2 E3 )
F1 F2 F1 F2
( R S ) T { tr ts tt (tr R) (ts S ) (tt T )}
R ( S T ) { tr tstt (tr R) (ts S ) (tt T )}
10. 投影于笛卡尔积的分配律
设E1和E2是两个关系表达式,A是E1的属性组, B是E2的属性组。则:
A , A ,, A ,B ,B ,,B ( E1 E2 )
1 2 n 1 2 m
A , A ,, A ( E1 ) B ,B ,,B ( E2 )
1 2 n 1 2 m
S
C .CnoSC .Cno
C .Cno
C
×
SC .Sno ,SC .Cno
1 2 n
A , A ,, A ( E1 ) A , A ,, A ( E2 )
1 2 n 1 2 n
注:先做投影可以减少读取写入的数据,因此减少磁盘IO 量,从而提高了效率。
设S1是计科041的学生关系表, S2是计科042的学生关系表: 查找计科041、042的大于19岁的学生:
9. 选择对自然连接的分配率
F ( E1 E2 ) F ( E1 ) F ( E2 )
F只涉及E1和E2的公共属性。
注:先做选择可以减少做笛卡儿积的数据,结果关系的数 据量也同步减少,因此减少磁盘IO量,提高了效率。
查找‘95001’这位学生的选课记录:
Sno'95001' ( S SC ) Sno'95001' ( S ) Sno'95001' ( SC )
Sname
Cpno'5'C .CnoSC .CnoSC .SnoS .Sno
× × C SC S
第一步:利用规则4分解选择运算
Sname
Cpno'5'
F ( F ( E ) ) F F ( E )
1 2 1 2
C .CnoSC .Cno
SC.SnoS .Sno
× × C SC S
F F ( E ) F ( F ( E) )
1 2 1 2
第二步:尽量下放选择运算
Sname ( E E ) ( E ) E F 1 2 F 1 2
Cpno'5'
C .CnoSC .Cno
SC.SnoS .Sno
× × C SC S
8. 选择与差运算的分配率
设E1和E2有相同的属性名,则:
F ( E1 E2 ) F ( E1 ) F ( E2 )
注:先做选择可以减少读取写入的数据,因此减少磁盘IO 量,从而提高了效率。
设S1是计科041的学生关系表, S3是计科专业的学生关系表:
Sage19 ( S3 S1 ) Sage19 ( S3 ) Sage19 ( S1 )
第七讲 查询树的优化
王晓辉 华北电力大学计算机系
等价的概念:
若关系表达式f(E1,E2,…,En)的结果 与关系表达式g(E1,E2,…,En)的结果 是同一个关系,那么称这两个表达式等价。 若关系表达式E1和E2是等价的可以记为:
E1 E2
等价变换规则
1.
连接、笛卡儿积交换率 设E1和E2是关系代数表达式,F是连接运算的条 件,则有:
1 2 n 1 2 m
第三步(2):第一次下放后:
Sname
SC.SnoS .Sno
×
SC .Sno
S .Sname ,S .Sno
S
C .CnoSC .Cno
×
Cpno'5'
C
SC
第三步(3):第二次下放:
Sname
SC.SnoS .Sno
×
SC .Sno ( C .Cno SC .Cno ( E ) SC .Sno ( C .Cno SC .Cno ( ( C .Cno , SC .Sno,SC .Cno ( E )))
(1)F只涉及E1的属性。 (2)F=F1∧F2,且F1只涉及E1的属性,F2只 涉及E2的属性。 (3) F=F1∧F2,且F1只涉及E1的属性,而 F2涉及E1和E2的属性。
(1) 实例:95001这个学生可能的选课情况:
Sno'95001' ( S C ) Sno'95001' ( S ) C
3. 投影的串接定律
A , A ,, A ( B ,B ,,B ( E )) A , A ,, A ( E )
1 2 n 1 2 m 1 2 n
这里,E是关系代数表达式,Ai(i=1, 2,…,n),Bj(j=1,2,…,m)是属性 名且{A1,A2,… An} 是{B1,B2,…,Bm} 的子集。
求IS系年龄大于19岁的学生:
Sdept ' IS ' ( Sage19 ( S )) Sdept ' IS 'Sage19 ( S )
5. 选择与投影的交换率
F ( A , A ,, A ( E ) ) A , A ,, A ( F ( E ) )
1 2 n 1 2 n
此时,条件F只涉及属性组A。若条件中有不属 于A的属性组B,那么有更一般的规则:
A , A ,, A ( F ( E ))
1 2 n
A , A ,, A ( F ( A , A ,, A ,B ,B ,,B ( E )))
1 2 n 1 2 n 1 2 m
Sage19 ( Sname,Sage ( S )) Sname,Sage ( Sage19 ( E ))
(2)证明:
F ( E1 E2 ) F F ( E1 E2 )
1 2
F2 ( F1 ( E1 E2 ) ) F2 ( F1 ( E1 ) E2 ) F1 ( E1 ) F2 ( E2 )
7. 选择与并的分配率
设E=E1∪E2,E1和E2有相同的属性名,则:
F ( E1 E2 ) F ( E1 ) F ( E2 )
注:先做选择可以减少读取写入的数据,因此减少磁盘IO 量,从而提高了效率。
设S1是计科041的学生关系表, S2是计科042的学生关系表:
Sage19 ( S1 S2 ) Sage19 ( S1 ) Sage19 ( S2 )
第三步:尽量下放投影运算
Sname
SC.SnoS .Sno
SC .Sno ,S .Sno ,Sname
×
C .CnoSC .Cno
×
S
Cpno'5'
C
A , A ,, A , B , B ,, B ( E1 E2 )
1 2 n 1 2 m
SC
A , A ,, A ( E1 ) B , B ,, B ( E2 )
Sname ( Sage19 ( S )) Sname ( Sage19 ( Sname ,Sage ( E )))
6.选择与笛卡尔积的交换
(E ) E ( 1 ) F 1 2 F ( E1 E2 ) F1 ( E1 ) F2 ( E2 ) (2 ) ( 3 ) ( ( E ) E ) 2 F2 F1 1
S .Sname ,S .Sno
S
SC .Sno
C .CnoSC .Cno
×
Cpno'5'
C
SC
第三步(3):第二次下放:
Sname
SC.SnoS .Sno
×
SC .Sno
S .Sname ,S .Sno
S
C .CnoSC .Cno
×
C .Cno , SC .Sno ,SC .Cno
优化实例
例:对课本第二章例9的关系代数表达式(如下) 进行优化。
Sname ( Cpno'5' (C SC S ))
其中,C是课程表,S是学生表,SC是学生选 课表。 在优化规则中没有对自然连接的直接优化, 我们把自然连接分解为笛卡儿积和选择。
分解后的关系代数表达式
Sname ( Cpno'5'C .CnoSC .CnoSC .SnoS .Sno (C SC S ))
×
SC .Sno
S .Sname ,S .Sno
S
C .CnoSC .Cno
C .Cno
C
×
SC .Sno ,SC .Cno
SC
Cpno'5'
第四步:尽量把选择和投影靠在一起
Sname
SC.SnoS .Sno
×
SC .Sno
S .Sname ,S .Sno