网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

数据库SQL查询技术的优化策略

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员,鉴于大家对数据库SQL查询技术的优化策略十分关注,会员在此为大家搜集整理了“数据库SQL查询技术的优化策略”一文,供大家参考学习!


    数据库SQL查询技术的优化策略
    [摘要]在数据库系统中,数据查询是一项及其重要的操作。影响数据库系统性能的因素有很多,其中运用SQL语句的优劣对数据库系统的性能有直接的影响。优化的SQL语句能够提高数据库系统的性能,从而实现高效的查询,提高系统的可用性。[关键词]SQL查询优化
    一、引言在数据库应用系统中,相对于数据库其它操作,查询操作是最为重要的一部分,在系统开发过程中,若不注重SQL的查询策略,往往在刚开始应用时比较流畅,但随着数据库表中记录的日积月累数量越来越大,系统的响应速度越来越慢,甚至让人无法忍受,因此,查询优化也就有着非常重要的地位。科学合理地构造查询系统,是成功开发数据库应用系统非常重要的环节。据统计约有90%的性能问题是由于程序员或用户使用了不恰当的查询语句造成的,因此SQL语句的质量对整个系统效率有重大关系。DBMS处理查询计划的过程是:做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后。由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执
     行结果返回给用户。虽然现在的数据库产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,因此用户所写语句的优劣至关重要。二、优化方法一个好的查询表达式不是基于纯粹的理论假设及谓词想像出来的,而是在实际的项目开发过程中总结的经验,本文就通过几个常用的查询优化方法,结合举例来说明SQL查询语句优化技术。(一)合理建立和使用索引索引是数据库中重要的数据结构,是优化的基础,建立索引的根本目的是提高查询效率,索引的使用要恰到好处,其使用原则如下:1.在经常进行连接的列上建立索引,而不经常连接的字段则由优化器自动生成索引;2.在频繁进行排序或分组的字段上建立索引;3.在条件表达式中经常在不同值较多的列上建立索引,在不同值少的列上不要建立索引,例如在人事信息表中的“党员”字段中,只有两个不同的逻辑值:.T.和.F.这两个值,所以就没有必要建立索引。例如:两个表PEOPLE(编号,,性别……)和WIFE(编号,,性别….)命令SELECTPEOPLE.编号,PEOPLE.,WIFE.编号,
     WIFE.FROMPEOPLE,WIFEWHEREPEOPLE.编号=WIFE.编号这两个表要进行链接,就要在这两个表上以“编号”为字段建立索引。(二)避免使用不兼容的数据最微妙的查询问题之一就是在WHERE子句中,对具有不同
    类型的字段的比较,例如FLOAT与INT,CHAR与VARCHAR,BINARY与VARBINARY是不兼容的,因此要求WHERE子句中表达式的数据类型是兼容的,数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如,对于SQL语句SELECTFROMPEOPLEWHERE月收入>1500由于WHERE子句中,字段月收入是货币型字段,而1500是整型数,优化器无法对其进行优化,并且DBMS要耗费一定的时间将整型数1500转化成货币型字段后,才能进行优化,才能与字段月收入比较。为此,在编程时可将整型数1500先转化成货币型字段,而不要等到运行时由系统来转化,即语句改为:SELECTFROMPEOPLEWHER月收入≥$1500(三)避免使用“<>”或“NOT”这样的操作符“<>”是排斥性的操作符,而不是包括性的操作符,这会使系
     统无法使用索引,而只能直接搜索表中的数据.例如1:SELECTFROMPEOPLEWHERE月收入<>15002:SELECTFROMPEOPLEWHERENOT(月收入=1500)3:SELECTFROMPEOPLEWHERE月收入>1500OR月收入<1500从上面3个命令我们就可以看出第3个命令可以使用索引查询,它的查询速度是最快的。(四)避免对搜索参数使用其它操作符如数学、字符串函数等例如:SELECFROMPEOPLEWHERESUBSTR(,1,2)=“李”WHERE子句中对列的任何操作结果都是在SQL语句运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引.因此将SQL语句重写成下面这样:SELECFROMPEOPLEWHERELIKE这样就提高了查询的速度。(五)避免使用IN语句当查询语句中有IN关键词时,优化器采用OR并列条件。例如:SELECTFROMPEOPLEWHERE编号IN“李%”
     (“1002”,”1004”)数据库系统转化为:SELECTFROMPEOPLEWHERE编号=“1002”OR编号=“1004”在命令中,当可以使用IN或者EXIST时,EXISTS远比IN的效率高。在操作中如果把所有的IN操作符子查询改写为使用EXISTS的子查询,这样效率更高。同理,使用NOTEXIST代替NOTIN会使查询添加限制条件,由此减少全表扫描次数,从而加快查询的速度以达到提高数据库运行效率。(六)避免对查找条件使用各种运算符对查询条件使用各种运算符,数据库系统在执行时,首先计算运算表达式的值,这样就影响系统的运算速度,例如:1)SELECT*FROMPEOPLEWHERE月收入*12>240002)SELECT*FROMPEOPLEWHERE月收入>2000这两个命令的查询结果是一样的,但是第一条命令首先计算表达式的值,然后再参与查询,而第二条命令则是直接查询,查询效率明显比第一条命令高。三、结束语编写优劣SQL
    语句是提高影响数据库系统的重要因素,对于数据库系统,不是仅仅实现功能即可,还要追求起执行的效率,在本文中,说明了在查询中编写SQL语句应该注意的问题,在大
     多数的情况下,需要反复试验不同的SQL语句才能得到最佳的方案。参考文献[1]萨师煊,数据库系统概论,高等教育出版社1990.5
    
    
  • 上一篇资讯: 数据库SQL语法优化
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师