首页 > 开发 > 综合 > 正文

用函数格式化EXPLAIN PLAN

2020-03-09 23:59:00
字体:
来源:转载
供稿:网友

explain plan命令的输出结果是解决sql效率低下问题的最重要的诊断工具之一。此命令加载一个工作表格(默认名称为plan_table),表格中带有oracle优化器为sql语句计算的执行计划步骤。例如:

explain plan for

select empno, ename

from emp

where ename like 's%';

由于plan_table中的行形成了一个等级,对其进行查询需要应用select语句中的两个复杂子语句——start with与connect by。第一次在oracle 9i中出现并在10g中得到扩充的dbms_xplan使格式化及显示执行计划更为容易。

dbms_xplan.display是一个表格标值函数,它显示plan_table的内容。与常规的纯量函数substr或总计函数sum不同的是,表格函数返回一个完整的行集合(rowset)。它们用在select语句的from子语句中,前面必须加上table这个词。如:

select *

from table(dbms_xplan.display);

列表a显示的是上述explain plan语句的结果,并由dbms_xplan.display格式化。

值得注意的是,dbms_xplan还能从存储在系统全局区(system global area, sga)内的指针显示“实时”执行计划。列表b显示的是由用户scott执行的同一sql语句。通过查看v$session视图,你可以找到执行scott任务的最后一个sql id。这反过来又可输入到dbms_xplan.display_cursor中,获得指针所使用的执行计划。

最后,dbms_xplan.display_awr函数可用来查寻oracle 10g的自动负荷信息库(automatic workload repository, awr)获得的历史sql语句,并显示它的执行计划。它显示一个你可以访问的含七天历史记录的滚动窗口。

所有这三个函数都是协调sql语句的强大工具。

bob watkins(ocp、mcdba、mcse、mct)是一个有25年经验的计算机专业人士,从事过技术培训师、顾问与数据库管理员等职 。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表