第6章查询处理和优化共52页文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.
( A1,A2,..A ., n c(R)) c( A1,A2,..A ., n (R))
Att(C r){A1,A2,..A .,} n
5. R JN S = S JN R
6. c(RJNS)(c(R)J)NS,
Attr( cA ) ttr(R)
7. c1AN c2D (RJN S)(c1(R)J ) N (c2(S)),
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’
SP
AND P.PNAME = ‘BOLT’
消除对查询无用的属性
SNAME
消除对查询无用的属性
JNSP.PNUMP.PNUM
SNAME
JNSP.PNUMP.PNUM
JN S.SNUMSP.SNUM
P.PNAM'BEOL' T
P S.CITY'NANJIN' G SP.QUAN10000
JN S.SNUMSP.SNUM
PNUM
SNU,SMNAME SNU,PMNU M P.PNAM'BEOL'T
式中,Attr.(c1) Attr.(R) Attr.(S) Attr.(c2) Attr.(R) Attr.(T)
而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)
6.2 代数优化
代数优化对查询进行等效变换,以减少执行开销。 代数优化的原则是尽量减小查询过程中间结果的 大小。
选择、投影操作通常能够有效地减小关系的大小。 连接、迪卡尔乘积和并操作容易生成较大的查询中 间结果。
因此,先做选择、投影;先做小关系间的连接, 再做大关系的连接;甚至需要先找出查询中的公共表 达式,以避免重复运算。
At(ct1)rAt(R t)rA , t(ct2)rAt(St)r
8. 属性L集 {A 1,...A,n,B1,...B,m}, 其中 {A1, ,...A,n}Att(R r),{B1,...B,m}Att(Sr)
则 L(RJNc S)( A1,...A, n(R))JNc( B1,..B .,m(S))
有如下查询 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
SQL语句转化为原始查询树
应用程序
BEGIN TRAN 查询语句 END
…
CALL AM(参数)
…
目标码
预编译
编译和连接 执行
AM依赖因素
访问模块AM
优化不 占执行时 间!!
解释方式和编译方式各适用于什么情况? 对于常见的例行事务,编译方式可提高性能。 对于简短的即时查询,解释方式灵活实用。
代数优化 对查询语句进行变换不涉及存取路径 物理优化 根据存取路径选择合理的存取策略进行优化 规则优化 仅根据启发式规则选择执行的策略进行优化 代价估算优化
重新安排连接(笛卡尔乘积)的顺序。 4.如果笛卡尔乘积后还须按连接条件进行选择操作可将两者组
常用变换规则
1. c 1 AN c2 .A .D .N c(n R D )c 1 (c2 (..c(.n R ) ()...)
2. c1(c2(R ) )c2(c1(R ))
3.
( li1 st lis2(t ...(lisn(tR)).. .))lis1(tR),
lis1 t lis2 t .. . lisn t
Sp
S.CITY'NANJIN' G SP.QUAN10000
p
ቤተ መጻሕፍቲ ባይዱ原始查询树
S
SP
先连接小关系
S,P,SP经选择后得S’、P’、SP’,估算大小: |S’|=|S|/NCITY
|P’|=|P|/NPNAME |SP’|=|SP|×(Vmax-10000)/(Vmax-Vmin) 设|S’|<|P’|, |SP’|<|P’|
式中 Att(cr)L
9. { , , } 则 c ( R S ) (c ( R )( )c ( S ))
10. { , , } 则 L ( R S ) ( L ( R )( )L ( S ))
11. {JN ,,, }则 , (RS) TR(S T)
注意:规则11中,对于连接运算,可能出现S与T之 间无连接条件的情况,此时的连接运算成为迪卡尔乘 积例。如:(R JNc1 S)JNc2 T,
S p AND SP.QUAN > 10000
原始查询树
选择操作下压
SNAME
C
选择操作尽量下压
SNAME
S.CITY'NANJIN' G SP.PNUM P.PNUM SP.PNSPU .QM UP.APNN10U00M0
S.SNUMSP.SNUM
P.PNAM'BEOL' T
SP
S.SNUMSP.SNUM P.PNAM'BEOL'T
S
SP
S.CITY'NANJIN' G SP.QUAN10000
P
S
SP
代数优化的基本步骤:
1.以SELECT子句对应投影操作,以FROM字句对应迪卡尔乘 积,
以WHERE子句对应选择操作,生成原始查询树。 2.应用变换规则2)、6)、7)、9)、10),尽可能将选择条件移 向树叶方向。 3.应用连接、迪卡尔乘积的结合律,按照小关系优先做的原则,
例如:12+64+88=? (12+88)+64=164
查询优化是相对而言的,可能的执行策略 很多,穷尽代价很大,不能片面追求绝对的最 优。
数据库查询语言的处理过程:
(1)解释方式执行
应用程序 查询请求
DBMS
BEGIN TRAN
查询语句
END
查询结果
解释执行 查询语句
优化占执 行时间!!
(2)编译方式