数据库SQL调优ppt课件.ppt

数据库SQL调优ppt课件.ppt

ID:59450045

大小:261.50 KB

页数:31页

时间:2020-09-18

数据库SQL调优ppt课件.ppt_第1页
数据库SQL调优ppt课件.ppt_第2页
数据库SQL调优ppt课件.ppt_第3页
数据库SQL调优ppt课件.ppt_第4页
数据库SQL调优ppt课件.ppt_第5页
资源描述:

《数据库SQL调优ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Oracle数据库SQL调优员工培训中心XXXX年X月X日概述数据库的调优包括多个层面,如:操作系统调优、数据合理有效的存储、数据库服务器参数调整、应用层调优等对应用开发层的SQL的调优,是最直接有效的手段,可解决80%以上的数据库访问效率问题本次培训讲述一些书写高效SQL语句常用规则规则:用EXPLAINPLAN分析SQL语句显示oracle的优化器为sql语句选择的执行计划.可以在不执行SQL的情况下分析语句.通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.通过分析执行计划,可以发现并

2、避免:不必要的全表扫描选择性不高的范围搜索错误的连接次序过迟的条件过滤操作规则:用EXPLAINPLAN分析SQL语句按照从里到外,从上到下的次序解读分析的结果.分析的结果是用缩进的格式排列的,最内部的操作将被最先解读.如果两个操作处于同一层中,带有最小操作号的将被首先执行.NESTEDLOOP是少数不按照上述规则处理的操作,正确的执行路径是检查对NESTEDLOOP提供数据的操作,其中操作号最小的将被最先处理.目前许多第三方的工具如TOAD,PL/SQL都提供了极其方便的EXPLAINPLAN工具规则:用EXPLAINPLAN分析SQL语句举例:SEL

3、ECT*FROMdept,empWHEREemp.deptno=dept.deptnoExecutionPlan:0SELECTSTATEMENTOptimizer=CHOOSE10NESTEDLOOPS21TABLEACCESS(FULL)OF'EMP‘31TABLEACCESS(BYINDEXROWID)OF'DEPT'43INDEX(UNIQUESCAN)OF'PK_DEPT'(UNIQUE)规则:合理有效的使用索引提高查询效率在多数情况下,通过索引提高查询效率是非常有效的办法索引一定要建的合理,并且被正确的使用选择合适的索引列规则:选择在wher

4、e子句中常用的查询列做索引字段选择常用来关联表的字段做索引字段对普通的B-TREE索引,应该选择具有选择性高(highselectivity)的字段做索引字段,若字段的不同取值很少,即选择性低,则适合建位映射索引不要在经常被修改的字段上建索引。索引会降低update,insert,delete等操作的效率。规则:合理有效的使用索引提高查询效率对低选择性的字段,可以考虑建位映射索引。位映射索引在oracle的数据仓库应用中常用。相比与B_TREE索引,位映射索引效率更高,占用空间更小。对作为where子句中的函数参数的字段,应该建函数索引,普通索引将不被使

5、用。规则:合理有效的使用索引提高查询效率通过索引查询,得到查询结果分成两个步骤,首先扫描索引找到复合条件的记录的rowid,然后再根据rowid从记录表中得到结果记录。当查询返回的记录数很多时,从记录表中读取的数据量也很大,不如不通过索引,直接全表扫描效率更高。规则:避免在索引列上使用计算或在非基于函数的索引列上使用函数WHERE子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描.例如:SELECT…FROMtblWHEREcol+10>20--全表扫描,低效应改为:SELECT…FROMtblWHEREcol>10--使用col列上的索

6、引,高效当对索引列上使用计算时,应把计算操作右移。若需要在索引列上应用函数,考虑创建基于函数的索引。规则:避免在索引列上使用计算或在非基于函数的索引列上使用函数常见的未正确使用索引的例子:在下面的例子里,‘!='将不使用索引.记住,索引只能告诉你什么存在于表中,而不能告诉你什么不存在于表中.不使用索引:SELECTACCOUNT_NAMEFROMTRANSACTIONWHEREAMOUNT!=0;使用索引:SELECTACCOUNT_NAMEFROMTRANSACTIONWHEREAMOUNT>0;规则:避免在索引列上使用计算或在非基于函数的索引列上使用

7、函数下面的例子中,‘

8、

9、'是字符连接函数.就象其他函数那样,停用了索引.不使用索引:SELECTACCOUNT_NAME,AMOUNTFROMTRANSACTIONWHEREACCOUNT_NAME

10、

11、ACCOUNT_TYPE='AMEXA';使用索引:SELECTACCOUNT_NAME,AMOUNTFROMTRANSACTIONWHEREACCOUNT_NAME=‘AMEX'ANDACCOUNT_TYPE='A';规则:避免在索引列上使用计算或在非基于函数的索引列上使用函数如果一定要对使用函数的列启用索引,ORACLE新的功能:基于函数的索引(Fun

12、ction-BasedIndex)也许是一个较好的方案.CREATEINDEXE

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

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

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