format:参数用于控制包含在输出中的信息类型;
除了以上的基本的四种输出格式外,format 还有一些附加的选项可用于定制化输出行为,使
用中可以通过逗号和空格分隔来声明多个关键字,同时可以使用”+”和”-”符号来包含或
排除相应的显示元素,这些附加的选项在官方文档中可以查到:
1.ROWS – 显示被优化器估算的记录的行号
2.BYTES – 显示优化器估算的字节数
3.COST – 显示优化器计算的成本信息
4.PARTITION – 显示分区的分割信息
5.PARALLEL – 显示并行执行信息
6.PREDICATE – 显示谓语
7.PROJECTION – 显示列投影部分(每一行的那些列被传递给其父列已经这些列的大小)
8.ALIAS – 显示查询块名称已经对象别名
9.REMOTE – 显示分布式查询信息
10.NOTE – 显示注释
11.IOSTATS – 显示游标执行的 IO 统计信息
12.MEMSTATS – 为内存密集运算如散列联结,排序,或一些类型的位图运算显示内存管理
统计信息
13.ALLSTATS – 与'IOSTATS MEMSTATS'等价
14.LAST – 显示最后执行的执行计划统计信息,默认显示为 ALL 类型,并且可以累积。
二、示例
【a】使用 display_cursor 方法查看最近一条语句的执行计划
//收集运行时的统计信息,包括行数,一直读取次数,物理读次数,物理写次数以及运算在
一行数据上耗费的运行时间,如果没有指定该参数,就不会有 A-Rows,A-Time,Buffers 这三列
信息
select /*+ gather_plan_statistics */ count(*) from scott.emp;
//将 sql_id 和 child_number 设置成 null,表示获取上一条执行语句的执行计划
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
执行过程如下图所示:
【b】获取某条指定语句的执行计划
//执行一个简单查询
select count(*) from scott.emp where sal between 100 and 3000;
//收集运行时的统计信息
select /*+ gather_plan_statistics */ count(*) from scott.emp where sal between 100 and 3000;
//通过 v$sql 视图查询到 sql 语句的 SQL_ID 和 CHILD_NUMBER(注意,必须要确保要查询的 sql
语句还在 shared pool 中)
评论