首 页   论文发表 期刊大全 论文下载 常见问题 发表流程 免责声明 合作加盟 关于我们 诚信通道 联系我们   设为首页 加入收藏
摘要:本文主要探讨了在数据库的应用中对数据库查询优化的一些策略,其中包括基于索引、SQL语句的优化的方法,并简要对其他一些常用方法做了介绍。 
关键词:数据库查询优化查询优化 
0引言 
随着计算机应用的深入,计算机技术的成熟,各种应用软件的普及,应用数据..
教育期刊 | 经济期刊 | 科技期刊 | 文学期刊 | 医学期刊 | 学报期刊 | 建筑期刊 | 社科期刊 | 计算机期刊 | 图书管期刊 | 农业期刊 | CSSCI期刊 | 核心期刊 | 其他期刊
教育论文 | 经济论文 | 医药论文 | 文学论文 | 艺术论文 | 英语论文 | 法学论文 | 哲学论文 | 计算机论文理学论文  | 工学论文 |  管理论文 | 政治论文 | 社会论文
资源搜索: 搜索 高级搜索
2000论文网-诚信快速的论文发表网站! 论文发表投稿信箱:qwqk2000@126.com 论文发表在线咨询QQ: 85597153 论文发表咨询电话:0371-69135500  

TOP

数据库的查询优化方法分析
2010-05-12 21:14:08 来源:www.lw2000.com 作者: 【 】 浏览:112次 评论:0

摘要:本文主要探讨了在数据库的应用中对数据库查询优化的一些策略,其中包括基于索引、SQL语句的优化的方法,并简要对其他一些常用方法做了介绍。
关键词:数据库 查询优化 查询 优化
        0 引言
        随着计算机应用的深入,计算机技术的成熟,各种应用软件的普及,应用数据也随着日常工作而迅速增长,作为数据仓库的数据库的重要性也日益显著。                            
        数据库系统作为管理信息系统的核心,各种基于数据库的联机事务处理以及联机分析处理正慢慢的转变成为计算机应用的最为重要的部分,根据以往大量的应用实例来看,在数据库的各种操作中,查询操作所占的比重最大,而在查询操作中基于SELECT语句在SQL语句中又是代价最大的语句。如果在使用中采用了优秀的查询策略,往往可以降低查询的时间,提高查询的效率,由此可见查询优化在数据库中的重要性。本文就数据库查询优化中的策略进行介绍及探索。
        1 基于索引的优化
        数据库的优化方法多种多样,不同的方法对提高数据库查询效率也不相同。
        索引作为数据库中的重要数据结构,它的根本目的就是为了提高查询的效率。而优化查询的重要方法就是建立索引,建立适合关系数据库系统的索引,这样就可以避免表扫描,并减少了因为查询而造成的输入输出开销,有效提高数据库数据的查询速度,优化了数据库性能。然而在创建索引时也增加了系统时间和空间的开销。所以创建索引时应该与实际查询需求相结合,这样才能实现真正的优化查询。
        1.1 判断并建立必要的索引 对所要创建的索引进行正确的判断,使所创建的索引对数据库的工作效率提高有所帮助。为了实现这一点,我们应做到以下要求:在熟记数据库程序中的相关SQL语句的前提下,统计出常用且对性能有影响的语句;判断数据库系统中哪些表的哪些字段要建立索引。其次,对数据库中操作频繁的表,数据流量较大的表,经常需要与其他表进行连接的表等,要进行重       点关注。这些表上的索引将对SQL语句的性能产生重要的影响。
        1.2 对索引使用的一些规则 索引的使用在一些大型数据库系统中会经常使用到,这样可以有效的提高数据库性能,使数据库的访问速度得到提高。但索引的使用要恰倒好处,所以我们在使用索引时应遵守使用原则:建立索引可以提高数据库的查询速度,但索引过多,不但不能实现优化查询,反而会影响到数据库的整体性能。索引作为数据库中实际存在的对象,每个索引都要占用一定的物理空间。所以对于索引的建立要考虑到物理空间容量,以及所建立索引的必要性和实用性。
        1.3 合理的索引对SQL语句的意义 索引建立之后,还要确保其得到了真正的使用,发挥了其应有的作用。首先,可以通过SQL语句查询来确定所建立的索引是否得到了使用,找出没有使用到的索引。分析索引建立但没有使用的原因,使其真正发挥作用。其次,索引得到使用以后,是否得到了预期的效果,对数据库的性能是否实现了真正意义上的提高,只有合理的索引才能真正提高数据库的性能。
        2 优化SQL语句
        在使用索引时可以有效的提高查询速度,但如果SQL语句使用不恰当的话,所建立的索引就不能发挥其作用。所以我们应该做到不但会写SQL,还要写出性能优良的SQL语句。下面,就如何优化引用例子进行说明。

首先,在进行查询时,返回的值应该是查询所需要的。在查询中应该尽量减少对数据库中的表的访问行数,使查询的结果范围最小,这就意味着在查询时,不能过多的使用通配符,如:select*from table1语句,而应该做到最小化查询范围,要查询几行几列就选择几行几列,如:select col1 from table1;多数情况下,用户并不需要查询到的所有数据,而只是部分或靠前的数据时,我们也可以通过SQL语句来进行限制查询的结果,如:select top 50 col1 from table1。
        其次,对于一些特殊的SQL语句,在使用时应正确选择。我们用一组例子来说明,如:EXISTS,NOT EXISTS。
        语句一:select sum(t1.c1) from t1 where((select count(*)from t2 where t2.c2=t1.c2)>0)   
        语句二:select sum(t1.c1) from t1 where exists(select*from t2 where t2.c2=t1.c1)
        两个语句所得到的结果相同,但,语句二的效率要远高于语句一,因为语句一在查询中产生了大量的索引扫描。
        在对数据库查询时,所使用的语句多种多样,但选择恰当的的字句能够有效的提高查询效率。
        最后,WHERE子句在使用时应该注意的问题。
        在WHERE子句中可以使用exist 和not exist代替in和not in。应该尽量避免使用in,not in,or 或者having。可以使用表链接代替 exist。Having可以用where代替,如果无法代替可以分两步处理。
        3 其他优化方法
        数据库的查询优化方法不仅仅是索引和SQL语句的优化,其他方法的合理使用同样也能很好的对数据库查询功能起到优化作用。我们就来列举几种简单实用的方法。
        3.1 避免或简化排序 应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。
        3.2 避免相关子查询 如果在主查询和WHERE子句中的查询中同时出现了一个列的标签,这样就会使主查询的列值改变后,子查询也必须重新进行一次查询。因为查询的嵌套层次越多,查询的效率就会降低,所以我们应当避免子查询。如果无法避免,就要在查询的过程中过滤掉尽可能多的。
        3.3 创建使用临时表 在表的一个子集进行排序并创建临时表,也能实现加速查询。在一些情况下这样可以避免多重排序操作。但所创建的临时表的行要比主表的行少,其物理顺序就是所要求的顺序,这样就减少了输入和输出,降低了查询的工作量,提高了效率,而且临时表的创建并不会反映主表的修改。
        3.4 用排序来取代非顺序存取 磁盘存取臂的来回移动使得非顺序磁盘存取变成了最慢的操作。但是在SQL语句中这个现象被隐藏了,这样就使得查询中进行了大量的非顺序页查询,降低了查询速度,对于这个现象还没有很好的解决方法,只能依赖于数据库的排序能力来替代非顺序的存取。

 4 结论
        对于数据库的优化,我们要抓住关键问题,提出改善查询效率,这样才能真正使数据库服务得到根本提高。本文在对数据库查询优化的方法上,进行了分析,提出了部分见解,有效的提高数据库查询效率。
参考文献
[1]王珊,孟小峰 《数据库系统导论(第七版)》 机械工业出版社.2000年10月
[2]王磊,王熙宁 《网上考试系统的性能与安全分析》.情报科学.2004年22期.
[3]Abnhrmx Silbersehaa《数据库系统概念》.机械工业出版社2006年10月.


Tags:论文发表 发表论文 责任编辑:论文发表
中国论文网-论文发表发表论文(www.lw2000.com),是一个专门从事期刊推广论文发表论文创作指导的机构。本站提供整体论文发表解决方案:省级论文/国家级论文/核心论文/CN论文多种期刊供你选择。
发表论文投稿信箱:qwqk2000@126.com
发表论文在线咨询:85597153
发表论文咨询电话:17351597825

】【打印繁体】 【收藏】 【关闭】 【返回顶部
上一篇浅析管理信息系统 下一篇EXCEL2003在健身俱乐部管理中的应..

联系我们 论文发表 论文投稿

论文发表在线咨询:站点合作85597153
论文发表咨询电话:17351597825
论文发表投稿信箱:qwqk2000@126.com

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

期刊导航 | 论文下载 | 常见问题 | 发表流程 | 免责声明 | 合作加盟 | 关于我们 | 诚信通道 | 联系我们  
论文发表在线咨询:85597153 咨询电话:17351597825投稿信箱:qwqk2000@126.com
Copyright © 2008-2012http://www.lw2000.com all rights reserved 苏ICP备11037565号
论文发表、发表论文 论文发表、发表论文
电话17351597825 河南省郑州市丰产路412号
2000论文网 版权所有.