第6 查询处理和优化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
|P’|=|P|/NPNAME |SP’|=|SP|×(Vmax-10000)/(Vmax-Vmin) 设|S’|<|P’|, |SP’|<|P’|
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
例如:12+64+88=? (12+88)+64=164
查询优化是相对而言的,可能的执行策略 很多,穷尽代价很大,不能片面追求绝对的最 优。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
数据库查询语言的处理过程:
(1)解释方式执行
应用程序 查询请求
DBMS
BEGIN TRAN
查询语句
END
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
常用变换规则
1. c1 AND c2...AND cn(R) c1( c2 (...( cn(R))...))
2. c1(c2(R)) c2(c1(R))
3.
( list1
list2 (...(
listn (R))...))
list 1 (R),
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
6.2 代数优化
代数优化对查询进行等效变换,以减少执行开销。 代数优化的原则是尽量减小查询过程中间结果的 大小。 选择、投影操作通常能够有效地减小关系的大小。 连接、迪卡尔乘积和并操作容易生成较大的查询中 间结果。 因此,先做选择、投影;先做小关系间的连接, 再做大关系的连接;甚至需要先找出查询中的公共表 达式,以避免重复运算。
有如下查询 Q : SELECT SNAME
FROM S,P,SP WHERE S.SNUM = SP.SNUM
AND SP.PNUM = P.PNUM AND S.CITY = ‘NANJING’ AND P.PNAME = ‘BOLT’ AND SP.QUAN > 10000
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
解释方式和编译方式各适用于什么情况? 对于常见的例行事务,编译方式可提高性能。 对于简短的即时查询,解释方式灵活实用。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
代数优化 对查询语句进行变换不涉及存取路径 物理优化 根据存取路径选择合理的存取策略进行优化 规则优化 仅根据启发式规则选择执行的策略进行优化 代价估算优化
查询结果
解释执行 查询语句
优化占执 行时间!!
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
(2)编译方式
应用程序
BEGIN TRAN 查询语句 END
…
CALL AM(参数)
…
目标码
预编译
编译和连接 执行
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
AM依赖因素
访问模块AM
优化不 占执行时 间!!
则 L (R JNc S ) ( A1,...,An (R))JNc ( B1,...,Bm (S ))
式中Attr(c) L
9. {,,}则 c (R S) ( c (R)) ( c (S))
10. {,,}则 L(R S) ( L(R)) ( L(S))
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
list1 list2 ... listn
4.
A1, A2,...,An ( c (R)) c (
A1, A2,..., An (R))
wk.baidu.com
Attr(C) {A1, A2,...,An}
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
5. R JN S = S JN R
6. c (R JN S) ( c (R)) JN S,
SQL语句转化为原始查询树
Select
From
Where
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
Q可用右图所示的原 始查询树表示:
SNAME
Q : SELECT SNAME
C
FROM S,P,SP WHERE S.SNUM = SP.SNUM
AND SP.PNUM = P.PNUM AND S.CITY = ‘NANJING’
Attr(c) Attr(R)
7. c1 AND c2 (R JN S) ( c1(R))JN( c2 (S)),
Attr(c1) Attr(R), Attr(c2) Attr(S)
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
8. 属性集L {A1,...,An , B1,...,Bm}, 其中,{A1,...,An} Attr(R),{B1,...,Bm} Attr(S)
而S和T之间没有连接条件。可改写为:
R JNc1 AND c2 (ST)
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
范例p118例6-1
设有S(供应商),P(零件),SP(供应关系)三个关系,关系模式 如下:
S(SNUM,SNAME,CITY) P(PNUM,PNAME,WEIGHT,SIZE) SP(SNUM,PNUM,DEPT,QUAN)
P.PNAME'BOLT '
SP
S.SNUM SP.SNUM
P.PNAME'BOLT '
Sp
p
S.CITY 'NANJING'
SP.QUAN10000
原始查询树
S
SP
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
先连接小关系
S,P,SP经选择后得S’、P’、SP’,估算大小: |S’|=|S|/NCITY
SP
AND P.PNAME = ‘BOLT’
S AND SP.QUAN > 10000
p
原始查询树
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
选择操作下压
SNAME
C
选择操作尽量下压
SNAME
S.CITY 'NANJING'
S.SNUM SP.SNUM
SP.PNUM P.PNUM SP.PNSUPM.QUPA.PNNU10M000
11. {JN ,,,}则,
(R S ) T R (S T )
注意:规则11中,对于连接运算,可能出现S与T之 间无连接条件的情况,此时的连接运算成为迪卡尔乘 积例。如:(R JNc1 S)JNc2 T,
式中,Attr.(c1) Attr.(R) Attr.(S) Attr.(c2) Attr.(R) Attr.(T)
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
例如:12+64+88=? (12+88)+64=164
查询优化是相对而言的,可能的执行策略 很多,穷尽代价很大,不能片面追求绝对的最 优。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
数据库查询语言的处理过程:
(1)解释方式执行
应用程序 查询请求
DBMS
BEGIN TRAN
查询语句
END
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
常用变换规则
1. c1 AND c2...AND cn(R) c1( c2 (...( cn(R))...))
2. c1(c2(R)) c2(c1(R))
3.
( list1
list2 (...(
listn (R))...))
list 1 (R),
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
6.2 代数优化
代数优化对查询进行等效变换,以减少执行开销。 代数优化的原则是尽量减小查询过程中间结果的 大小。 选择、投影操作通常能够有效地减小关系的大小。 连接、迪卡尔乘积和并操作容易生成较大的查询中 间结果。 因此,先做选择、投影;先做小关系间的连接, 再做大关系的连接;甚至需要先找出查询中的公共表 达式,以避免重复运算。
有如下查询 Q : SELECT SNAME
FROM S,P,SP WHERE S.SNUM = SP.SNUM
AND SP.PNUM = P.PNUM AND S.CITY = ‘NANJING’ AND P.PNAME = ‘BOLT’ AND SP.QUAN > 10000
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
解释方式和编译方式各适用于什么情况? 对于常见的例行事务,编译方式可提高性能。 对于简短的即时查询,解释方式灵活实用。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
代数优化 对查询语句进行变换不涉及存取路径 物理优化 根据存取路径选择合理的存取策略进行优化 规则优化 仅根据启发式规则选择执行的策略进行优化 代价估算优化
查询结果
解释执行 查询语句
优化占执 行时间!!
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
(2)编译方式
应用程序
BEGIN TRAN 查询语句 END
…
CALL AM(参数)
…
目标码
预编译
编译和连接 执行
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
AM依赖因素
访问模块AM
优化不 占执行时 间!!
则 L (R JNc S ) ( A1,...,An (R))JNc ( B1,...,Bm (S ))
式中Attr(c) L
9. {,,}则 c (R S) ( c (R)) ( c (S))
10. {,,}则 L(R S) ( L(R)) ( L(S))
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
list1 list2 ... listn
4.
A1, A2,...,An ( c (R)) c (
A1, A2,..., An (R))
wk.baidu.com
Attr(C) {A1, A2,...,An}
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
5. R JN S = S JN R
6. c (R JN S) ( c (R)) JN S,
SQL语句转化为原始查询树
Select
From
Where
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
Q可用右图所示的原 始查询树表示:
SNAME
Q : SELECT SNAME
C
FROM S,P,SP WHERE S.SNUM = SP.SNUM
AND SP.PNUM = P.PNUM AND S.CITY = ‘NANJING’
Attr(c) Attr(R)
7. c1 AND c2 (R JN S) ( c1(R))JN( c2 (S)),
Attr(c1) Attr(R), Attr(c2) Attr(S)
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
8. 属性集L {A1,...,An , B1,...,Bm}, 其中,{A1,...,An} Attr(R),{B1,...,Bm} Attr(S)
而S和T之间没有连接条件。可改写为:
R JNc1 AND c2 (ST)
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
范例p118例6-1
设有S(供应商),P(零件),SP(供应关系)三个关系,关系模式 如下:
S(SNUM,SNAME,CITY) P(PNUM,PNAME,WEIGHT,SIZE) SP(SNUM,PNUM,DEPT,QUAN)
P.PNAME'BOLT '
SP
S.SNUM SP.SNUM
P.PNAME'BOLT '
Sp
p
S.CITY 'NANJING'
SP.QUAN10000
原始查询树
S
SP
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
先连接小关系
S,P,SP经选择后得S’、P’、SP’,估算大小: |S’|=|S|/NCITY
SP
AND P.PNAME = ‘BOLT’
S AND SP.QUAN > 10000
p
原始查询树
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
选择操作下压
SNAME
C
选择操作尽量下压
SNAME
S.CITY 'NANJING'
S.SNUM SP.SNUM
SP.PNUM P.PNUM SP.PNSUPM.QUPA.PNNU10M000
11. {JN ,,,}则,
(R S ) T R (S T )
注意:规则11中,对于连接运算,可能出现S与T之 间无连接条件的情况,此时的连接运算成为迪卡尔乘 积例。如:(R JNc1 S)JNc2 T,
式中,Attr.(c1) Attr.(R) Attr.(S) Attr.(c2) Attr.(R) Attr.(T)