浅谈数据库查询优化策略

浅谈数据库查询优化策略

ID:21370173

大小:52.00 KB

页数:5页

时间:2018-10-21

浅谈数据库查询优化策略_第1页
浅谈数据库查询优化策略_第2页
浅谈数据库查询优化策略_第3页
浅谈数据库查询优化策略_第4页
浅谈数据库查询优化策略_第5页
资源描述:

《浅谈数据库查询优化策略》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、浅谈数据库查询优化策略:数据库系统是各类应用程序开发的核心,是各行业如银行、企业、政府、机关、企事业单位等众多部门最为重要的应用。而在实际应用中,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,查询操作往往需要花费更多的时间和空间资源。因此数据库查询的效率会直接影响数据库操作,同时也会决定整个系统的效率,由此可见查询优化技术的重要性。  关键词:数据库;查询优化  :TP311:A:1671-7

2、597(2011)0310177-01    数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心。数据库技术研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题,在数据库系统中减少数据存储冗余、实现数据共享、保障数据安全以及高效地检索数据和处理数据。  随着计算机技术与X络通信技术的发展,数据库技术已成为信息社会中对大量数据进行组织与管理的重要技术手段及软件技术,是X络信息化管理系统的基础。而很多数据库应用系统和信息管理系统中,查询功能是必不可少的,也是所占的比例最大的。数据

3、库的查询功能的优化规划,会影响整个系统的效率,由此可见查询优化规划是数据库设计中非常重要的一部分。要想整个数据库的查询得到很大程度的优化,就必须要从需求、设计到使用都要进行规划和技术改进。下面简单介绍一下数据库查询优化的策略。  1合理使用索引  索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处。在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引;在频繁进行排序或分组(即进行gro

4、upby或orderby操作)的列上建立索引;在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度;如果待排序的列有多个,可以在这些列上建立复合索引(co  mpoundindex)。  2避免或简化排序  应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。索引中不包括一个或几个待排序的列;groupb

5、y或orderby子句中列的次序与索引的次序不一样;排序的列来自不同的表都会影响查询优化。  为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。  3消除对大型表行数据的顺序存取  在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列进行索引。例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、

6、课程号、成绩)。如果两个表要做连接,就要在“学号”这个连接字段上建立索引。  4避免困难的正规表达式  LIKE关键字支持通配符匹配,技术上叫正规表达式。但这种匹配特别耗费时间。例如:SELECT*FROMcustomercustomerWHEREzipcode>“98000”,在执行查询时就会利用索引来查询,显然会大大提高速度。  5尽量避免使用游标  因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效

7、。与临时表一样,游标并不是不可使用。对小型数据集使用FAST_FORWARD游标通常要优于其他逐行处理方法,尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。  6尽量使用表变量来代替临时表。  如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。避免频繁创建和删除临时表,以减少系统表资源的消耗。临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用

8、大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。在新建临时表时,如果一次性插入数据量很大,那么可以使用selectinto代替createtable,避免造成大量log,以提高速度;如果数据量不大,为了缓和系统表的资源,应先createtable,然后insert。如果使用到了临时表,在存储过程的最后务必将所有的临时表显式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。