SQL性能优化培训.ppt

SQL性能优化培训.ppt

ID:55831578

大小:179.00 KB

页数:18页

时间:2020-06-09

SQL性能优化培训.ppt_第1页
SQL性能优化培训.ppt_第2页
SQL性能优化培训.ppt_第3页
SQL性能优化培训.ppt_第4页
SQL性能优化培训.ppt_第5页
资源描述:

《SQL性能优化培训.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQL性能优化讲师:刘建军2011-09SQL性能优化意义SQL优化建议一、SQL性能优化意义1、数据库应用程序的优化程序设计中的一个著名定律是20%的代码用去了80%的时间;两种方式优化:源代码的优化和SQL语句的优化。源代码的优化在时间成本和风险上代价很高;另一方面,源代码的优化对数据库系统性能的提升收效有限。DBMS处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提

2、交给系统处理执行,最后将执结果返回给用户。2、SQL脚本优化的主要原因SQL语句是对数据库(数据)进行操作的惟一途径;SQL语句消耗了70%~90%的数据库资源;SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;SQL语句可以有不同的写法;SQL语句易学,难精通一、SQL性能优化意义二、SQL性能优化建议1、创建索引聚集索引(clusteredindex)是一种数据表的物理顺序与索引顺序相同的索引.非聚集索引(nonclusteredindex)则是一种数据表的

3、物理顺序与索引顺序不相同的索引。2、聚集索引和非聚集索引区别汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码

4、。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。二、SQL性能优化建议3.下面的表总结了何时使用聚集索引或非聚集索引二、SQL性能优化建议1.WHERE子句中的连接顺序SQLSERVER采用自下而上的顺序解析WHERE子句; 根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。二、SQL性能优化建议二、SQL性能优化建议2.WHERE子句中的连接顺序SELECT*FROMEMPE WHERESAL>5000 ANDJOB=‘M

5、ANAGER’ AND25<(SELECTCOUNT(*)FROMEMPWHEREMGR=E.EMPNO); SELECT*FROMEMPE WHERE25<(SELECTCOUNT(*)FROMEMPWHEREMGR=E.EMPNO)ANDSAL>5000 ANDJOB=‘MANAGER’;---性能可能相差数十倍之多。二、SQL性能优化建议讨论:下面哪个条件运作效率更高?方式A:wherecolA<=10000ANDcolA>=1方式B:wherecolA>=1ANDcolA<=10000方式C:wherecol

6、Abetween1AND10000讨论:下面三个条件是否查询效率一样?sal>24000/12sal>2000sal*12>240003、用EXISTS替代IN在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOTEXISTS)通常将提高查询的效率.二、SQL性能优化建议4、用NOTEXISTS替代NOTIN在子查询中,NOTIN子句将执行一个内部的排序和合并.无论在哪种情况下,NOTIN都是最低效的(因为它对子查询中的表执行了一个全表遍历).为了避免使用NO

7、TIN,我们可以把它改写成外连接(OuterJoins)或NOTEXISTS.二、SQL性能优化建议5、避免相关子查询一个字段的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的字段值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。二、SQL性能优化建议6、避免相关子查询selecthm,rqfromTabAwhereitemIN(selectitemformTabBwhereTabB.num=50)se

8、lecthm,bffromTabA,TabBwhereTabA.item=TabB.itemANDTabB.num=50二、SQL性能优化建议7.优化groupby提高groupby语句的效率,可以将不需要的记录在groupby之前过滤掉。例如:低效:selectdzxl,avg(hsje)fromreport_sale_accountgrou

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

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

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