下面是Oracle 10g及以后版本计划表PLAN_TABLE各列的说明,引自《Oracle性能优化求生指南》:
STATEMENT_ID |
由EXPLAIN PLAN的SET STATEMENT_Id子句提供的SQL语句的唯一标识符 |
PLAN_ID |
执行计划在全局表PLAN_TABLE中的唯一标识符,通常依靠序列ORA_PLAN_IN_SEQ$来生成 |
TIMESTAMP |
EXPLAIN PLAN语句执行的日期与时间 |
REMARKS |
注释,不会被EXPLAIN PLAN命令改值 |
ID |
执行计划中每一步的唯一标识符 |
PARENT_ID |
这一步的父步骤的识别号,一个步骤的输出结果会交给它的父步骤 |
POSITION |
如果两个步骤拥有同样的父步骤,有更低POSITION值的步骤被优先执行 |
OPERATION |
执行的操作类型,如TABLE ACCESS或SORT |
OPTIONS |
操作的附加信息,例如,以TABLE SCAN为例,选项可能是FULL或BY ROWID |
OBJECT_NODE |
如果是分布式查询,这一列表示用于引用对象的数据库链接;对于并行查询,它的值可能对应一个临时的结果集 |
OBJECT_OWNER |
对象的所有者 |
OBJECT_NAME |
对象名称 |
OBJECT_INSTANCE |
对象在SQL语句中的位置 |
OBJECT_TYPE |
对象的类型(表、索引等) |
OPTIMIZER |
解释SQL语句时生效的优化器目标 |
SEARCH_COLUMNS |
未使用 |
OTHER |
对于分布式查询,这一列可能包含发往远程数据库的SQL语句的文本;对于并行查询,它表示并行从属进程执行的SQL语句 |
OTHER_XML |
包含XML文档中的其他附加信息,它包含版本信息、使用到的SQL概要或存储概要、动态采样以及执行计划的散列值 |
OTHER_TAG |
标识OTHER列中的值的类型,它可以指示这一步是否被一条分布式SQL语句远程执行,或是表明并行执行的类型 |
COST |
优化器估算出来的此操作的相对成本 |
CARDINALITY |
优化器预期这一步将返回的记录数 |
BYTES |
预计这一步将返回的字节数 |
PARTITION_START |
如果要执行分区消除(partition elimination),这一列表明要访问的分区范围的起始分区。它也可能包含关键字KEY或者ROW LOCATION,来表明要访问的分区将在运行时确定 |
PARTITION_END |
表明将要访问的分区范围的结束分区 |
PARTITION_ID |
这一列列出执行计划步骤的执行计划ID(由前面ID列标识),这些步骤确定了由PARTITION_START与PARTITION_END定位到的分区 |
DISTRIBUTION |
这一列用来描述记录是如何从一组并行查询从属进程(生产者)分配到后续的“消费者”从属进程的。它的可能值为PARTITION(ROWID)、PARTITION(KEY)、HASH、RANGE、ROUND-ROBIN、BROADCAST、QC(ORDER)以及QC(RANDOM) |
CPU_COST |
估算出来的操作的CPU成本 |
IO_COST |
估算出来的操作的IO成本 |
TEMP_SPACE |
估算出来的这一步操作所使用的临时存储的空间大小(如用来排序的内存或磁盘空间) |
ACCESS_PREDICATES |
SQL语句中,确定如何在当前步骤中提取记录的子句。它可能包含提供给索引检索或表连接的子句 |
FILTER_PREDICATES |
SQL语句中确定如何对记录进行过滤的子句,如WHERE子句在非索引列上的条件 |
PROJECTION |
决定将返回的记录的子句,通常是SELECT后面的字段列表 |
TIME |
优化器为这一步骤执行估算的时间消耗 |
QBLOCK_NAME |
查询块的唯一标识符,通常由系统生成或通过提示QB_NAME指定 |