第6章查询处理和优化共52页文档

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)编译方式
相关文档
最新文档