浅谈数据库中sql语句优化

浅谈数据库中sql语句优化

ID:25545243

大小:68.12 KB

页数:5页

时间:2018-11-21

浅谈数据库中sql语句优化_第1页
浅谈数据库中sql语句优化_第2页
浅谈数据库中sql语句优化_第3页
浅谈数据库中sql语句优化_第4页
浅谈数据库中sql语句优化_第5页
资源描述:

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

1、浅谈数据库中SQL语句优化【摘要】查询语句的效率不高对数据库性能产生影响,为提升数据库系统的性能,应就SQL语句实施合理的优化,其实即为:把性能不高的SQL语句变为功能一样、而性能优异的一种SQL语句,通过对优化方法和技巧的研究提高SQL语句的效率,在一定程度上也就提高了查询的效率。【关键词】数据库SQL语句的优化设计、开发以及成品这些是数据库系统的一个生命周期。对于设计环节,针对数据库性能实施优化,花费最少、收益最高;但对于成品环节,又就数据库实施性能优化,花费最多、但收益最低。针对数据库性能优化而言,一般能对硬件、操作系统、数据库参数以及应用程序的优化。对硬件进行升级即为

2、最普遍的优化办法,按照资料统计,可以看出,针对硬件、操作系统以及数据库参数作出的优化,得到的性能增加,全部加起来大概只提高40%左右,而60%的提升是来自对应用程序的优化;很多优化学者说,就应用程序实施优化,能让系统的性能增加80%。应用程序优化一般包括二方面:源代码以及SQL语句,源代码的优化因为牵涉到对程序逻辑的变更,对风险、时间与成本的要求非常高,但是就数据库系统性能的增加收效不好;因此常常运用对SQL语句的优化。一、优化SQL语句的原因对于数据库系统,最基本、常用、繁杂的操作就是查询,该操作在全部数据库操作之中占到的比例最高。在数据库系统累积达到某种程度,查询之时要是

3、运用单条顺序扫描,扫描一次全部的记录会消耗掉几十分钟,有时更会几个小时,进而,系统失去即实的使用价值。运用何种查询策略,可以让查询时间变成几秒、几秒,如何更精确、简便的得到查询结果,就是要对SQL语句的优化问题。查询优化为尽力找出和给定的表达式等价,同时执行效率很好的表达式,某查询通常存在多种实现方法,主要为怎样找出和它等价、同时操作时间花费少的一种表迗式,查询优化关注的问题是怎样省时、省空间以及效率高。优化的核心问题是尽可能减少查询中各表的参与加工的数据量,最终实现优化空间与时间这一目的。首先,因为SQL语句为就数据库实施操作的仅有途径,其决定了数据库系统的性能。其次,因为

4、SQL语句花费70%到90%的数据库资源。第三,SQL语句因为和程序设计逻辑相独立,就SQL语句实施优化,影响不了程序逻辑。再次,SQL语句本身存在不一样的写法,而于性能上有着很大差异。最后,因为SQL语句学起来很简单,然而精通较难。二、如何实施SQL语句优化优化SQL语句的方法主要通过重写实施优化,DBA、有时也是资深程序员会对SQL语句执行计划进行合理研究,根据经验,对SQL语句重写,再就性能与结果作出对比,以便寻求到性能比较好的SQL语句。(一)在查询Select语句中用Where子句限制返回的行数,避免表扫描,若返回不必要的数据,既浪费了服务器的I/O资源,又加重了网

5、络的负担降低性能。(二)在查询时不要返回不需要的行、歹ij。(三)在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。(四)select中Where子句选择所有合适的行,GroupBy用来分组统计行,Having子句用来剔除多余的分组。如果GroupBY的目的不包括计算,只是分组,那么用Distinct更快,Havin子句仅在聚集GroupBy子句收集行之后才施加限制,这样导致全表扫描后再选择,若可以使用Where子句来代替Having,则在扫描表的同时就进行了选择,其查询效率大大提高了。但是当Having子句用于聚集函数时不能由WHER

6、E代替时则必须使用Having。三、提升SQL语句的开发水平(一)WHERE后面的条件顺序影响WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响。如:Select*fromzl_yhjbqkwheredy_dj=‘1KV以下andxh_bz=lSelect*fromzl_yhjbqkwherexh_bz=landdy_dj‘1KV以下’以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj=‘1KV以下’条件在记录集内比率为99%,而xh_bz=l的比率只为0.5%,在进行第一条SQ

7、L的时候99%条记录都进行dy_dj及xh_bz的比较,而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较,以此可以得出第二条SQL的CPU占用率明显比第一条低。(二)查询表顺序的影响在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及没有对表进行统计分析的情况下,就会按表出现的顺序进行链接,由此可见表的顺序不对时会产生十分耗服务器资源的数据交叉。四、写出专家级的SQL语句查询优化是关键的问题,其重点在于如何提高SQL的执行效率,所以选择什么样的查询语句是关键。进行

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

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

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