- 1、本文档共97页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5查询处理及优化概要
一个实例(续) 假如SC表的Cno字段上有索引 第一步就不必读取所有的SC元组而只需读取Cno=‘2’的那些元组(50个) 存取的索引块和SC中满足条件的数据块大约总共3~4块 若Student表在Sno上也有索引 第二步也不必读取所有的Student元组 因为满足条件的SC记录仅50个,涉及最多50个Student记录 读取Student表的块数也可大大减少 总的存取时间将进一步减少到数秒 一个实例(续) 把代数表达式Q1变换为Q2、 Q3, 即有选择和连接操作时,先做选择操作,这样参加连接的元组就可以大大减少,这是代数优化 在Q3中 SC表的选择操作算法有全表扫描和索引扫描2种方法,经过初步估算,索引扫描方法较优 对于Student和SC表的连接,利用Student表上的索引,采用index join代价也较小,这就是物理优化 /97 小结 1查询处理概述 2基本运算的实现 3表达式计算 4表达式结果集大小估计 5关系表达式转换 6选择执行计划 * /97 等价规则 9. 集合运算并与交满足交换律 E1∪E2 = E2∪E1 E1∩E2 = E2∩E1 集合差运算不满足交换律 10.集合运算并与交满足结合律 (E1∪E2)∪E3 = E1∪(E2∪E3) (E1∩E2)∩E3 = E1∩(E2∩E3) 集合差运算不满足结合律 * /97 等价规则 11. 选择运算对并、交、差运算具有分配律: σp(E1 - E2)=σp(E1) - σp(E2) σp(E1∪E2)=σp(E1)∪σp(E2) σp(E1∩E2)=σp(E1)∩σp(E2) 进一步有: σp(E1 - E2)=σp(E1) - E2 σp(E1∩E2)=σp(E1)∩ E2 但对于∪不成立。 * /97 等价规则 12. 投影运算对并运算具有分配律 ∏L(E1∪E2) = (∏L(E1) )∪(∏L(E2) ) 最小的等价规则集:若一个等价规则集中的任何一条规则都不能由其它规则结合起来导出,则称该等价规则集为最小的等价规则集。 * /97 等价规则 例Пcustomer-name(σbranch-city=”Brooklyn”∧balance1000 (branch (account depositor))) 规则6 a (自然连接运算满足结合律) == Пcustomer-name(σ branch-city=”Brooklyn”∧balance1000 ((branch account) depositor)) 规则7 a (选择运算对theta连接运算具有分配律) == Пcustomer-name((σ branch-city=”Brooklyn”∧balance1000 (branch account)) depositor) * /97 等价规则 Пcustomer-name((σbranch-city=”Brooklyn”∧balance1000(branch account)) depositor) 规则7b (选择运算对theta连接运算具有分配律) == П customer-name((σbranch-city=”Brooklyn” (branch) σbalance1000 (account)) depositor) 规则8b (投影运算对theta连接运算具有分配律) == П customer-name(Пaccount-number(σbranch-city=”Brooklyn” (branch) σbalance1000 (account)) depositor) * /97 等价规则 说明: 规则只说明两个表达式等价,并不说明哪一个更好。 连接的次序很重要,好的连接次序序列产生小的中间结果。 规则的使用会产生大量的等价表达式,优化器要采用适当的技术来减少所产生的表达式的数量。 * /97 连接的次序 好的连接次序可以大大缩减中间结果的大小。 例Пcustomer_name (( σbranch-city=”Brooklyn” (branch)) (account depositor) 不同的连接次序 ×σbranch-city=”Brooklyn” (branch)
文档评论(0)