SQL语句常用的优化方法.ppt
文本预览下载声明
DBMS_SQLTUNE Dbms_sqltune 是ORACLE在10G版本里推出的Sql调优工具。 用户可以通过创建作业来把要调优的Sql语句放入Dbms_sqltune 包, 运行该作业,之后查询相关视图,获取该语句最佳的执行计划及建议。 如下步骤: 1 创建优化任务。 DBMS_SQLTUNE.CREATE_TUNING_TASK. 2 运行优化任务。 3 查询视图,获取任务的当前状态。 select status from user_advisor_taks where task_name=‘’; 4 查询语句的优化结果。 select dbms_sqltune.report_tuning_task(‘’) from dual; 此时可以看到最佳的执行计划及ORACLE的优化建议。 5 删除优化任务。 exec dbms_sqltune.drop_tuning_task(‘’); DBMS_ADVISOR 10G版本新推出的顾问框架,支持各种性能调优需求,通 过DBMS_ADVISOR包来支持各种需求,如,SQL调优, MV,索引建议等。 DBMS_PROFILE DBMS_PROFILE 包主要用来调优存储过程的执行过 程,通过跟踪记录存储过程中每条SQL的执行时间,来确定 哪些SQL语句最耗时,从而定位出需要调优的SQL语句。 11G在执行计划上的一些改进 自适应共享游标(ACS) ,克服带绑定变量的执行计划存在 的弊端。 2 在收集统计信息上的改进 A 设置收集统计信息时的选项,可对指定的表作单独 设置。 B 对联合列收集统计信息。 C 对函数以及表达式收集统计信息。 Spm ,Sql paln management , Sql 计划管理,实际是 10G中顾问框架(DBMS_ADVISOR)的升级版,通过这 个特性,ORACLE自动判断某个SQL新的执行计划是否更加优秀(成本更低),只有新的执行计划比原来的更佳,才会被使用。 例子:联合列收集统计信息对执行计划的改善。 select zb.vouchid, fb.fb_oid,xyb.fkxyb_oid, zb.ywbm, fb.hbbm, fb.deptid, fb.ywybm, fb.jobid, fb.szxmid, fb.cinventoryid, fb.ddh, fb.fph, zb.djdl, zb.djbh, fb.flbh, zb.djrq, zb.shrq, zb.effectdate, fb.ordercusmandoc, xyb.xydqr, fb.hsdj, zb.kmbm, fb.kmbm, xyb.ybye, xyb.fbye, xyb.bbye, fb.productline, zb.xslxbm, pk_salestru, ( fb.jfybje + fb.dfybje), fb.ybye, zb.dwbm, fb.wldx from arap_djfkxyb xyb, arap_djfb fb, bd_cumandoc, arap_djzb zb where xyb.fb_oid = fb.fb_oid and fb.ksbm_cl = bd_cumandoc.pk_cumandoc and bd_cumandoc.pk_salestru =1044V610000000000BL1 and fb.ksbm_cl is not null and fb.vouchid = zb.vouchid and ( zb.dwbm = 1044 and fb.dwbm = 1044 and fb.wldx = 0 and zb.sxbz = 10 and fb.verifyfinshed = N and( fb.xgbh 1 ) and ( fb.pausetransact is null or fb.pausetransact = N ) and xyb.dr = 0 and fb.fx = 1 and zb.djdl = ys and ( fb.ybye 0 or fb.yb
显示全部