数据库SQL查询处理及其优化方法的研究.doc
《数据库SQL查询处理及其优化方法的研究.doc》由会员分享,可在线阅读,更多相关《数据库SQL查询处理及其优化方法的研究.doc(25页珍藏版)》请在三一办公上搜索。
1、数据库SQL查询处理及其优化方法的研究摘要:随着计算机技术的发展和各种应用软件的广泛使用,各种应用数据也随着日常工作而迅速增长,数据管理的重要性也日益显著,各种基于数据库的联机事务处理以及联机分析处理已经成为数据管理中最重要的部分。大量的数据管理应用软件中,针对数据库的各种操作,查询操作所占的比重最大,如果在查询过程中使用高效的查询策略,往往可以减少查询代价,缩短查询时间,提高查询效率。论文基于SQL语言和对数据各种操作分析的基础上,探讨了数据库SQL查询处理的内容和过程,详细的研究了基于SQL查询优化的一些策略,其中主要包括索引查询、SQL语句优化其他一些常用优化方法。 关键词:数据库 查询
2、优化 索引 SQL语句 The research of database SQL query processing and optimized method Abstract: With the development of computer technology and various application software widely used, various application data also grow rapidly, the importance of data management increases markedly too, various processes b
3、ased on database online transaction processing and on-line analytical processing have become the most important parts of data management. Among a lot of data management application software, pointing at various operations in the database, the proportion of the query operation is the biggest, if usin
4、g efficient query execution, it can reduce cost, decrease query time and improve the query efficiency. Based on the SQL language and the analysis of various operations in database, this paper probes into the database SQL query processing and details some strategies which based on the content and pro
5、cess of SQL query optimization , these strategies mainly include index inquiry, SQL optimization and other common optimization methods. Key words:database;Query optimization; index ; SQL statements 目 录1 绪论12 关系数据库查询处理22.1 查询处理步骤22.2 实现查询操作的算法示例42.2.1 选择操作的实现42.2.2 连接操作的实现53 SQL查询处理优化方法63.1 基于索引的优化63
6、.2 SQL语句优化93.2.1 where字句优化93.2.2 避免相关子查询113.2.3 优化表的连接条件113.2.4 其他SQL语句优化123.3 其他优化方法123.3.1 避免或简化排序133.3.2 使用临时表133.3.3 优化表中数据类型143.3.4 用排序来取代非顺序存取143.3.5 数据服务器存储144 实例分析144.1 实验环境144.2 案例数据库154.3 具体实例16结束语20致谢21参考文献221 绪论 到如今,几乎所有应用系统的开发都离不开数据库,通过查询数据库就可以有效的得到想要的数据。但是,现实中许多数据库开发人员在利用一些前端数据库开发工具开发数
7、据库应用程序时只注重用户界面的华丽,并不注重查询效率,导致所开发出来的应用系统中查询时间长,响应速度慢,甚至查询结果不够准确等,系统工作效率低下,资源浪费严重。究其原因,一是硬件设备(如CPU、磁盘)的存取速度跟不上,内存容量不够大;另一方面是数据查询方法不适当,抑或是没有进行数据查询优化。许多数据库开发人员认为查询优化是DBMS(数据库管理系统)的任务,与程序员所编写的SQL语句关系不大,这是不对的,一个好的查询方法往往可以使程序性能提高数十倍。在实际的数据库产品(如Oracle、Sybase、SQL Server 2000等)的高版本中都是采用基于代价的优化方法,这种优化能根据从系统字典表
8、中所得到的信息来估计不同的查询方法代价,然后选择一个较优的规则。虽然现在的数据库产品在数据查询优化方面已经做得越来越好,但由于用户提交的SQL语句是查询优化的基础,因此用户所写语句的优劣至关重要。2 关系数据库查询处理要研究查询优化就必须知道数据库查询处理过程,本节阐述了关系数据库(RDBMS)的查询处理步骤,并介绍了查询处理的任务是把用户提交给RDBMS的查询语句转换为高效的执行计划。2.1 查询处理步骤 RDBMS查询处理过程可以分为四个阶段:查询分析、查询检查、查询优化和查询执行,如图2-1所示。(1) 查询分析查询分析是查询处理的第一个阶段,主要任务是对查询语句进行扫描、词法分析和语法
9、分析。从查询语句中识别出语言符号,SQL关键字、属性名和关系名等,并且进行语法检查和语法分析,即判断查询语句是否符合SQL语法规则。(2) 查询检查查询检查是根据数据字典对合法的SQL查询语句进行语义检查,即检查语句中的数据库对象,如属性名、关系名,是否存在和是否有效等。还要根据数据字典中的用户权限和完整性约束对用户的存取权限进行检查。如果该用户没有相应的访问权限或违反了完整性约束,就拒绝执行该查询操作。检查通过后便把SQL查询语句转换成等价的关系代数表达式。RDBMS一般都用查询树(query tree),也称为语法分析树,来表示扩展的关系代数表达式。这个过程中要把数据库对象的外部名称转换为
10、内部表示。词法分析语法分析语义分析符号名转换安全性检查完整性检查查询树(query tree)代数优化物理优化等执行策略描述代码生成查询计划的执行代码数据库数据字典查询语句查询分析查询检查查询优化查询执行图2-1 查询处理步骤(3) 查询优化每个查询语句都会有很多可供选择的执行策略和操作算法,查询优化(query optimization)就是选择一个高效的查询处理策略。查询优化有许多种方法。按照优化的层次一般可以分为代数优化和物理优化。代数优化是指关系代数表达式的优化,即按照一定的规则,改变代数表达式中操作的次序和组合,使查询执行更高效;物理优化则是指存取路径和底层操作算法的选择。选择的依据
11、可以是基于规则的,也可以基于代价的,还可以基于语义的。实际RDBMS中的查询优化器都综合了运用了这些优化技术,以获得最好的查询优化效果。(4) 查询执行 查询执行就是依据优化器得到的执行策略生成查询计划,由代码生成器(code generator)生成执行这个查询计划的代码。2.2 实现查询操作的算法示例选择操作和连接操作是查询操作的两个典型操作,每一种操作有多种执行这个操作的算法,下面探讨实现这两种操作的几个主要算法。2.2.1 选择操作的实现众所周知SELECT语句功能十分强大,有许多选项,因此实现的算法和优化策略也很复杂。下面以简单的选择操作为例讲述典型的实现方法。例1 Select *
12、 from student where;考虑的几种情况:C1:无条件;C2:Sno=200215121;C3:Sage20;C4: Sdept=CS AND Sage20;(1)简单的全表扫描方法对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出。对于小表,这种方法简单有效。对于大表顺序扫描十分费时,效率很低。(2)索引(或散列)扫描方法如果选择条件中的属性上有索引(例如B+树索引或Hash索引),可以用索引扫描方法。通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在要查询的基本表中找到元组。例1-C2 以C2为例,Sno=200215121,
13、并且Sno上有索引,则可以通过使用索引得到Sno为200215121元组的指针,然后通过元组指针在student表中检索等到该学生。例1-C3 以C3为例,Sage20,并且Sage上有B+树索引,则可以使用B+树索引找到Sage=20的索引项,以此为入口在B+树的顺序集上得到Sage20的所有元组指针,然后通过这些元组指针到student表中检索所有年龄大于20的学生。例1-C4 以C4为例,Sdept=CSAND Sage20,如果Sdept和Sage上都有索引,一种算法是:分别用上面的两种方法分别找到Sdept=CS的一组元组指针和Sage20的另一组元组指针,求这两组指针的交集,再到s
14、tudent表中检索,就得到计算机系年龄大于20的学生。另一种算法是:找到Sdept=CS一组元组指针,通过这些元组指针到student表中检索,并对得到的元组检查另一些选择条件是否满足,把满足条件的元组作为结果输出。2.2.2 连接操作的实现连接操作是查询处理中最耗时的操作之一。不失一般性,本文只讨论等值连接最常用的实现算法。例2 SELECT * FROM Student,SC WHERE Student.Sno=SC.Sno;(1)嵌套循环方法这是最简单可行的算法。对外层循环(student)的每一个元组(s),检索内层循环(SC)中的每一个元组(sc),并检查这两个元组在连接属性(sn
15、o)上是否相等。如果满足连接条件,则串接后作为结果输出,直到外层循环表中的元组处理完为止。(2)排序-合并方法这也是最常用的算法,尤其适合连接的诸表已经排好序的情况。用排序-合并连接方法的步骤是:如果连接的表没有排好序,首先对Student表和SC表按连接属性Sno排序;取student中的第一个Sno,依次扫描SC表中具有相同的Sno的元组;把它们连接起来;当扫描到Sno不相同的第一个SC元组时,返回Student表扫描它的下一个元组;再扫描SC表中具有相同的Sno的元组,把它们连接起来。重复上述步骤直到Student表扫描完。这样Student表和SC表都只要扫描一遍。当然,如果2个表原来
16、无序,执行时间要加上对两个表的排序时间。即使这样,对于2个大表,先排序后使用sort-merge join方法执行连接,总的时间一般仍会大大减少。(3)索引连接方法用索引连接方法的步骤是:在SC表上建立属性Sno的索引,如果原来没有的话;对Student中的每一个元组,由Sno值通过SC的索引查找相应的SC元组;把这些SC元组和Student表中的元组连接起来。循环执行,直到Student表中的元组处理完为止。(4)Hash Join方法属性作为hash 码,用同一个hash函数把R和S中的元组散列到同一个hash文件中。第一步,划分阶段,对包含较少元组的表进行一遍处理,把它的元组按hash函
17、数分散到hash表的桶中;第二步,试探阶段,也称为连接阶段,对另一表(S)进行一遍处理,把S的元组散列到适当的hash桶中,并把元组与桶中所有来自R并与之相匹配的元组连接起来。3 SQL查询处理优化方法查询优化在关系数据库系统中有着非常重要的地位,关系数据库系统和非过程化的SQL之所以能取得巨大的成功,关键得益于查询优化技术的发展。关系查询优化是影响RDBMS性能的关键因素。查询优化既是RDBMS实现的关键又是关系数据库的优点所在。它减轻了用户选择存取路径的负担。用户只要提出“干什么”,不必指出“怎么干”。对比一下非关系系统中的情况:用户使用过程化的语言表达查询要求,执行何种记录级的操作,以及
18、操作的序列是由用户而不是由系统来决定的。因此用户必须了解存取路径,系统要提供用户选择存取路径的手段,查询效率由用户的存取策略决定。如果用户做了不当的选择,系统是无法对此加以改进的。这就要求用户有较高的数据库技术和程序设计水平。下面介绍几种常用的查询优化方法。3.1 基于索引的优化(1)索引定义索引是一个单独的、物理的数据库结构。它是根据表中一列或若干列,按照一定顺序建立的列值与记录行之间的对应关系表。索引是依赖于表建立的,它包含索引键值及指向数据所在页面和行的指针。一个表的存储是由两部分组成的,一部分用来存放表的数据页面,另一部分存放索引页面,索引就存放在索引页面上。通常,索引页面相对于数据页
19、面来说要小得多。当进行数据检索时,系统先搜索索引页面,从中找到所需数据的指针,然后再直接通过指针从数据页面中读取数据。索引可以提供对一个表中的数据的有效访问,它可以用于加速数据的检索和强制唯一性限制。但是,不应该在每一个列上都建立索引,因为构造索引需要占用一定的系统资源,降低更新的速度。而且,插入、删除或更新一个索引列中的数据比非索引列中的数据要花费更长的时间。(2)索引的作用索引是加快数据检索的一种数据库结构,使得数据查询时不必扫描整个数据库就能迅速查到想要的数据。具体如下5个方面: 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 可以大大加快数据的检索速度,这也是创建索引的最主
20、要的原因。 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 在使用分组和排序子句进行数据检索时,同样可以减少查询中分组和排序的时间。 通过使用索引,可以在查询的过程中,使用优化器隐藏,提高系统的性能。(3)索引的类型如果一个表没有创建索引,则数据行不按任何特定的顺序存储,这种结构称为堆集。在SQL Server 2000的数据库中,按存储结构的不同将索引分为两类:簇索引(Clustered Index)和非簇索引(Nonclustered Index)。1. 簇索引簇索引对表的数据行的键值进行排序,然后再存储有用的数据记录。由于簇索引对表中的数据一一进行了排序,因此用簇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 SQL 查询 处理 及其 优化 方法 研究
链接地址:https://www.31ppt.com/p-2395409.html