Ch.04 查询优化.pptVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch.04 查询优化

第四章 关系数据库系统的查询优化 数据库系统概论(第三版) 萨师煊 王珊 高等教育出版社 2000.2 引言 什么是优化 关系语言通常被称为非过程化语言, 因为用户仅需指出做什么, 而不是怎么做 优化器 DBMS实现 “自动导航” 功能的重要技术, 它为用户的关系请求选择一个高效的执行方式 假定用户发出如下请求: 在这个简单的例子中, 也可能有两种执行数据访问的方式: 通过对关系EMP按物理顺序扫描, 直到找到所要的数据; 如果在EMP上有索引, 通过使用索引直接找到所要的数据 一般地, 对于任何一个给定的请求, 优化器根据如下考虑来选择执行请求的策略 请求中参照了哪些关系变量 关系变量的数据规模 存在什么索引 索引的选择性如何 在磁盘上数据是怎样物理聚集的 涉及什么样的关系操作 对于关系数据库系统来说,优化既是挑战也是机遇 称之为挑战, 是因为为了达到所需的性能要求, 数据库系统必须使用优化系统 说它是机遇, 是因为关系表达式具有的高度语义使得优化得以进行 对查询的优化是由系统完成的, 而且系统会比 “人” 做得更好 原因 有许多信息用户无法得到, 而优化器可以得到: 每个域中值的个数 每个表中的当前元组的个数 当数据库统计信息改变时, 可能需要改变执行策略—再优化, 对优化器来说很简单 优化器可以考虑一个给定查询的成百上千的执行策略, 而高水平的程序员最多也只能考虑三, 四个 优化器可以认为是包含着最优秀程序员的技巧和服务的程序。这就意味着任何人都可以使用这些技巧和服务 优化器的主要目的是为计算所给定的关系表达式选择一个高效的执行策略, 我们将叙述一些基本的原则和技术 查询优化的一般步骤 将查询转化为某种内部表示, 通常是语法树 根据等价变换规则把语法树转换成优化形式 选择低层的操作算法 生成查询计划 一个例子 假设这个数据库有100个供应商和10000个发货, 其中只有50个是有关零件P2的. 为简单起见, 还假设SUPPLIERS 和SHIPMENT分别存放在磁盘上两个独立的文件中. 如果不进行任何优化, 那么对该表达式的代价估计结果如下: 1) 连接SUPPLIERS 和SHIPMENT: 读10000个发货, 对100个供应商, 每个要读10000次 构造一个中间结果集保存这10000个已连接的元组 假设内存中没有空间存放这个结果集, 要将其写回到磁盘上 2) 从第1步的结果集中选择零件为P2的元组 将结果集重新读入内存, 但产生一个仅有50个元组的结果集 3) 将第2步的结果集在属性SNAME上投影 如果经过优化 1) 从SHIPMENT中选择零件为P2的元组 读10000个元组, 但只产生50个元组结果集 2) 把第1步的结果集和SUPPLIERS连接(连接属性S#) 读SUPPLIERS, 产生一个只有50个元组的结果集 3) 将第2步的结果集在属性SNAME上投影 4.2.2 一个实例 假定数据库中有1000个学生记录, 10000个选课记录, 其中选修了2号课程的选课记录为50个 第一种情况 1) 计算笛卡尔积 把STUDENT和SC的每个元组连接起来 读取时间: 105s 写出时间: 5×104 s 2) 作选择操作 依次读入连接后的元组, 按照选择条件选取满足条件的记录 所需时间: 5×104 s 3) 作投影 把第2步的结果在SNAME上作投影, 得到最终结果 总时间: 105 s 第二种情况 1) 自然连接 读取时间同第一种情况: 105s 因自然连接的元组数大大减少, 故写出时间仅为50s 2) 读取中间块, 执行选择运算, 时间: 50s 3) 把第2步结果作投影 总时间: 205s 第三种情况 1) 对SC作投影, 选取符合条件的50个元组, 时间: 5s 2) 读取STUDENT, 并与前一步的结果连接, 时间: 5s 输出结果 总时间: 10s 4.2.3 查询优化的一般准则 先做选择运算, 使计算的中间结果大大变小 在执行连接前对关系进行预处理 索引连接方法: 在连接属性上建立索引, 然后执行连接 排序合并连接方法: 在连接属性上对关系排序, 然后执行连接 把运算和选择同时进行, 以避免对同一张表重复扫描 *数据库系统概论 第 4 章 * SELECT SAL FROM EMP WHERE ENO = E4; Athens 30 Adams S5 London 20 Clark S4 Paris 30 Blake S3 Paris 10 Jones S1 London 20 Smith S1 CITY STATUS SNAME S# London Paris Rome London Paris London 12.0 17.0

您可能关注的文档

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档