执行计划的结果中,主要字段的具体含义如下:
STATEMENT_ID VARCHAR2(30) explain PLAN 语句中所指定的最优STATEMENT_ID 参数值, 如果在EXPLAN PLAN语句中没有使用SET STATEMENT_ID,那么此值会被设为NULL。
REMARKS VARCHAR2(80) 与被解释规划的各步骤相关联的注释最长可达80 字节
OPERATION VARCHAR2(30) 各步骤所执行内部操作的名称在某条语句所产生的第一行中该列的可能取值如下DELETE STATEMENT INSERT STATEMENT SELECT STATEMENT UPDATE STATEMENT
OPTIONS VARCHAR2(30) 对OPERATION 列中所描述操作的变种
OBJECT_NODE VARCHAR2(128) 用于访问对象的数据库链接database link 的名称对于使用并行执行的本地查询该列能够描述操作中输出的次序
OBJECT_OWNER VARCHAR2(30) 对于包含有表或索引的架构schema 给出其所有者的名称
OBJECT_NAME VARCHAR2(30) 表或索引的名称
OBJECT_INSTANCE INTEGER 根据对象出现在原始original 语句中的次序所给出的相应次序编号就原始的语句文本而论其处理顺序为自左至右自外向内景象扩张view
OBJECT_TYPE VARCHAR2(30) 用于提供对象描述性信息的修饰符例如索引的NON-UNIQUE
OPTIMIZER VARCHAR2(255) 当前优化程序的模式
ID INTEGER 分配给执行规划各步骤的编号
PARENT_ID INTEGER 对ID 步骤的输出进行操作的下一个执行步骤的ID
POSITION INTEGER 对于具有相同PARENT_ID 的步骤其相应的处理次序
COST INTEGER 根据优化程序的基于开销的方法所估计出的操作开销值。对于使用基于规则方法的语句该列为空。该列值没有特定的测量单位,它只是一个用于比较执行规划开销大小的权重值
CARDINALITY INTEGER 根据基于开销的方法对操作所访问行数的估计值
BYTES INTEGER 根据基于开销的方法对操作所访问字节的估计
OPTIMIZER_MODE初始化参数为整个instance选择了一个缺省的优化器模式,OPTIMIZER_MODE可设置的值及描述如下:
CHOOSE
优化器在CBO和RBO中选择一个模式,依赖于统计数据是否可用:
1) 如果数据目录至少包含了一个表的统计数据,则选择CBO,并且以最大吞吐量(all_rows)作为执行目标。
2) 如果数据目录仅包含了部分统计数据,则还是使用CBO模式,但优化器必须要猜测没有统计数据的部分的统计数据,可能会选择一个不是最好的执行计划。
3) 如果数据目录没有包含任何表的统计数据,则使用RBO模式。
ALL_ROWS
优化器为所有SQL语句选择CBO模式,而不管是否存在统计数据,都以最大吞吐量作为执行目标(最少的资源完成整个语句)。
FIRST_ROWS_n
优化器不管是否存在统计数据都选择CBO,并且以最快时间返回前n行结果作为执行目标,n可以等于1,10,100或1000。
FIRST_ROWS
优化器使用成本和heuristics的混合方法来确定一个最快返回部分结果的最好的计划。
注意:使用heuristics有时会导致CBO生成比不使用heuristics更大的值得注意的成本的计划。FIRST_ROWS向后兼容可用并且计划稳定。
RULE
优化器不管是否存在统计数据而为所有SQL语句选择RBO模式。
你可以通过更改初始化参数或通过alter session set OPTIMIZER_MODE语句在一个session中,为所有SQL语句更改CBO的执行目标,例如:
以下语句更改初始化参数,为整个instance中所有session更改了CBO的优化器执行目标为最快响应时间:
OPTIMIZER_MODE = FIRST_ROWS_1
以下SQL语句为当前session更改CBO的执行目标为最快响应时间:
ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_1;
如果优化器为一个SQL语句选择了CBO模式,并且语句中涉及的一些表没有统计数据,则优化器根据类似为这个表分配了多少数据块等内部信息来为这些表估计没有的统计数据。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14969361/viewspace-557360/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14969361/viewspace-557360/