关系模型的数据结构.PPT

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系模型的数据结构

3.4.1 查询优化概述 3.4.2 查询优化的一般策略 3.4 查询优化 3.4.3 关系代数的等价公式 3.4.1 查询优化概述(1) 1.查询优化的含义:SQL语言是高度非过程化的语言,用户只要指出“做什么”,至于“怎么做”则由RDBMS自动优化实现。 好处:给用户带来极大的方便,使对数据库的操作变得简便易行。 问题:加重了系统的负担,系统需要自行选择存取路径,而存取路径选择的好坏是影响查询效率的关键所在。 解决:在RDBMS中使用查询优化技术,提高关系系统的查询效率。 3.4.1 查询优化概述(2) 2.什么叫查询优化器:RDBMS服务器的一个组成部分(程序),其基本任务是:通过产生多个可供选择的执行计划,找到最低估算成本的执行计划来优化一条SQL语句,以提高RDBMS的查询效率。 3.4.1 查询优化概述(3) 3.查询优化器的优点 ⑴ 优化器可以从数据字典中获取许多统计信息,如关系中的元组数、关系中每个属性值的分布情况等。优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。 ⑵ 如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。 ⑶ 优化器可以考虑数百种不同的执行计划,而程序员—般只能考虑有限的几种可能。 ⑷ 优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化器相当于使得所有人都拥有这些优化技术。 3.4.1 查询优化概述(4) 4.DBMS实现查询优化的一般步骤: ⑴ 将查询需求转换成某种内部表示,通常是语法树。 ⑵ 根据一定的等价变换规则把语法树转换成标准(优化)形式。 ⑶ 选择低层的操作算法。对于语法树中的每一个操作需要,根据存取路径、数据的存储分布、存储数据的聚簇等信息来选择具体的执行算法。 ⑷ 生成查询计划(查询执行方案):查询计划由一系列有次序的内部操作构成的。DBMS生成多个执行方案,在计算每个执行方案的执行代价后,从中选择代价最小的一个执行。 3.4.1 查询优化概述(5) 5.在集中式数据库中,查询的执行代价为: 总代价=I/O代价+CPU代价 6.在多用户环境下查询的执行代价为: 总代价=I/O代价+CPU代价+内存代价 3.4.2 查询实例分析 例3.48 用户要查询选修了C02号课程的学生姓名,他输入的SQL语言表达为: SELECT Sname FROM Students S,Reports R WHERE S.Sno = R.Sno AND R .Cno=’C02’ RDBMS将以上要求转换成关系代数表示: 3.4.2 查询实例分析 RDBMS将以上要求转换成关系代数表示: Q1:∏Sname(σS.Sno=R.Sno∧R.Cno=C02(Students×Reports)) 先计算广义笛卡尔积,再做选择操作,最后执行投影操作。 Q2:∏Sname(σR.Cno=C02(Students Reports)) 先计算自然连接,再做选择操作,最后执行投影操作。 Q3:∏Sname(Students σR.Cno=C02(Reports)) 先计算选择操作,再做连接操作,最后执行投影操作。 3.4.2 查询实例分析 在相同的假设条件下,三种查询方式: Q1:其时间耗费为5×104s Q2:其时间耗费为210s Q3:其时间耗费为20s 此例说明了RDBMS中查询优化的必要性和重要性,同时也给出一些查询优化方法的基本思想:先选择运算后连接运算 3.4.3 查询优化的一般策略(1) 1.选择运算应尽早执行。选择符合条件的元组可以使中间结果所含的元组数大大减少,从而减少运算量和输入输出次数。 2.把投影运算和选择运算同时进行。如果投影运算和选择运算是对同一关系操作,则可以在对关系的一次扫描中同时完成,从而减少操作时间。 3.把投影操作与它前面或后面的一个双目运算结合起来,不必为投影(减少几个字段)而专门扫描一遍关系。 4.在执行连接运算之前,可对需要连接的关系进行适当地预处理,如建索引或排序。当一个关系读入内存后,就可根据连接属性值在另一个关系中快速查找符合条件的元组,加速连接运算速度。 3.4.3 查询优化的一般策略(2) 5.把笛卡尔乘积和其后的选择运算合并成为连接运算,以避免扫描笛卡尔乘积的中间结果。两个关系的连接运算,特别是等值连接运算比同样两个关系的笛卡尔乘积节约更多计算时间。 6.存储公用子表达式。对于重复出现的子表达式(简称公用子表达式),如果该表达式的结果不是很大的关系,则应将这个公用子表达式的结果关系存于

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档