- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 关系查询处理和查询优化 关系数据库系统的查询处理 关系数据库系统的查询优化 代数优化 物理优化 第九章 关系系统及其优化查询 本章介绍关系数据库的查询优化技术。为此首先介绍RDBMS的查询处理步骤,然后介绍询优化技术。 查询优化一般可分为代数优化和物理优化。代数优化是指关系代数表达式的优化;物理优化则是指存取路径和底层操作算法的选择,所以本章讲解了实现查询操作的主要算法。 本章的目的是便读者初步了解RDBMS查询处理的基本步骤,查询优化的概念、基本方法和技术,为数据库应用开发中利用查询优化技术提高查询效率和系统性能打下基础。 9.1关系数据库系统的查询处理 查询处理的任务是把用户提交给RDBMS的查询语句转换为高效的执行计划。 9.1.1查询处理步骤 RDBMS查询处理可以分为4个阶段:查询分析、查询检查、查询优化和查询执行,如图9.1所示。 9.1关系数据库系统的查询处理 1、查询分析 首先,对查询语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等,进行语法检查和语法分析,即判断查询语句是否符合SQL语法规则。 9.1关系数据库系统的查询处理 2、查询检查 根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象,如属性名、关系名,是否存在和是否有效。 还要根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查。如果该用户没有相应的访问权限或违反了完整性约束,就拒绝执行该查询。 检查通过后便把SQL查询语句转换成等价的关系代数表达式。RDBMS一般都用查询树(query tree),也称为语法分析树(syntax tree),来表示扩展的关系代数表达式。这个过程中要把数据库对象的外部名称转换为内部表示。 9.1关系数据库系统的查询处理 3、查询优化 每个查询都会有许多可供选择的执行策略和操作算法,查询优化(query optimization)就是选择一个高效执行的查询处理策略。 查询优化有多种方法。按照优化的层次一般可分为代数优化和物理优化。 代数优化是指关系代数表达式的优化,即按照一定的规则,改变代数表达式中操作的次序和组合,使查询执行更高效; 9.1关系数据库系统的查询处理 物理优化则是指存取路径和底层操作算法的选择。 选择的依据可以是基于规则(rule based)的,也可以是基于代价(cost based)的,还可以是基于语义(semantic based)的。 实际RDBMS中的查询优化器都综合运用了这些优化技术,以获得最好的查询优化效果。 9.1关系数据库系统的查询处理 4、查询执行 依据优化器得到的执行策略生成查询计划,由代码生成器[code generator)生成执行这个查询计划的代码。 9.1关系数据库系统的查询处理 9.1.2实现查询操作的算法示例 本节简单介绍选择操作和连接操作的实现算法,确切地说是算法思想。每一种操作有多种执行这个操作的算法,这里仅仅介绍最主要的几个算法。对于其他重要操作的详细实现算法,有兴趣的读者请参考有关RDBMS实现技术的书。 9.1关系数据库系统的查询处理 一、选择操作的实现 第三章中已经讲解了SELECT语句功能十分强大,有许多选项,因此实现的算法和优化策略也很复杂。不失一般性,下面以简单的选择操作为例介绍典型的实现方法。 9.1关系数据库系统的查询处理 [例l] Select * from student where 条件表达式; 考虑条件表达式的几种情况: C1: 无条件; C2: Sno=‘200215121’; C3: Sage=20; C4: Sdept=CS‘ AND Sage20; 9.1关系数据库系统的查询处理 1、简单的全表扫描方法 对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出。对于小表,这种方法简单有效。对于大表顺序扫描十分费时,效率很低。 9.1关系数据库系统的查询处理 2、索引(或散列)扫描方法 如果选择条件中的属性上有索引(例如B+树索引或Hash索引),可以用索引扫描方法。通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组。 9.1关系数据库系统的查询处理 [例1 - C2] 以C2为例,Sno=‘200215121’,并且Sno上有索引(或Sno是散列码),则可以使用索引(或散列)得到Sno为‘200215121’元组的指针,然后通过元组指针在student表中检索
文档评论(0)