(1.5)--第5章 查询处理与优化.pdfVIP

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

第5章查询处理与优化

数据查询操作是数据库中使用最多的操作,如何提高数据的查询效率、如何优化查询是

数据库管理系统的一项重要工作。

本章将介绍一般的DBMS通用的一些查询优化技术,主要包括代数优化和物理优化两

部分,目的是让读者解查询优化的内部实现技术和实现过程。

5.1概述

数据查询操作是数据库中使用最多的操作,也是最基本、最复杂的操作。数据库查询一

般都用查询语言表示,比如SQL语言。从查询语句出发到获得最终的查询结果,需要一个

处理过程,这个过程称为查询处理。关系数据库的查询语言一般都是非过程化语言,即仅表

达查询要求,而不说明查询执行过程。也就是用户不必关心查询语言的具体执行过程,而由

DBMS来确定合理的、有效的执行策略。DBMS在这方面的作用称为查询优化。对于执行

非过程化语言的DBMS,查询优化是查询处理中一项重要和必要的工作。

查询优化有多种途径。一种途径是对查询语句进行变换,例如改变基本操作的次序,使

查询语句执行起来更有效,这种查询优化方法仅涉及查询语句本身,而不涉及存取路径,称

为代数优化,或称为独立于存取路径的优化。查询优化的另一种途径是根据系统提供的存取

路径,选择合理的存取策略,例如,选用顺序搜索或者是索引搜索,这称为物理优化,或称

为依赖于存取路径的优化。有些查询优化仅根据启发式规则,选择执行的策略,如先做选择、

投影等一元操作,后做连接操作,这称为规则优化。除根据一些基本规则外,还对可供选择

的执行策略执行代价估算,从而从中选出代价最小的执行策略,这称为代价估算优化。这些

查询优化途径都是可行的。事实上,DBMS往往综合运用上述优化方法,以获得最好的优

化效果。

5.2SQL的查询处理

SQL的查询处理就是把用户提交的查询语句转换成为高效的查询执行计划。

5.2.1查询处理的步骤

SQL的查询处理分为以下四个阶段:查询分析、查询检查、查询优化、查询执行。

1、查询分析

首先对查询语句进行扫描、词法分析和语法分析。

2、查询检查

根据数据字典对合法的查询语句进行语义检查,即检查语句中的数据库对象是否存在

和是否有效。一般采用查询树或语法分析树,来表示扩展的关系代数表达式。

3、查询优化

查询优化就是选择一个高效执行的查询处理策略。按照优化的层次,查询优化可分为

代数优化和物理优化。

4、查询执行

依据优化器得到的执行策略生成查询计划,由代码生成器生成执行这个查询计划的代

码,并执行代码,返回查询结果。

各步骤之间的关系如下图所示:

图5-1查询处理步骤图

5.2.2查询处理示例

下面我们通过一个简单的例子,看一下为什么要进行查询优化。

假设要查询选修了“C001”课程的学生姓名。相应的SQL语句为:

SELECTSname

FROMStudentSJOINSCONS.SnoSC.Sno

WHERECnoC001

假设数据库中有1000个学生记录,10000个选课记录,其中选了“C001”课程的记录

有50个。

与该查询等价的关系代数表达式可以有多种形式:

(())

Q1∏SnameσStudent.SnoSC.SnoStudent×SC

(())

Q2∏SnameσSC.Cno‘C001’StudentSC

(())

Q3∏SnameStudentσSC.Cno‘C001’SC

还有其他几种形式,但这三种形式是典型的与该查询语句等价的代数表达式,分析这三

种形式的表达式就足够说明问题了。下面我们分析这三种查询执行策略在查询时间上的差

异。

1、Q1的执行过程

(1)进行广义笛卡尔积操作

把Student表的每个元组和SC表的每个元组连接起来。一般的连接做法是:在内存中

尽可能多地装入某个表(比如Student表)的若干块,并留出一块存放另一个表(比如SC

表)

文档评论(0)

185****8578 + 关注
实名认证
文档贡献者

热爱教育,专注于教育领域创作与分享。

1亿VIP精品文档

相关文档