天天看点

执行计划 - EXPLAIN PLAN产生的操作和选项值

AND-EQUAL . 接受多组rowid的操作,返回集合的交集,消除重复。用于在单列索引访问路径。
BITMAP CONVERSION

TO ROWIDS:转换位图表示为的可用于访问表的实际rowid。

FROM ROWIDS:转换rowids为位图表示。

COUNT:如不需要实际值,返回ROWIDs数量。

BITMAP INDEX

SINGLE VALUE:查找索引中单个键值的位图。

RANGE SCAN:检索键值范围内的位图。

FULL SCAN:若无开始和停止键值,则执行全位图索引扫描。

BITMAP MERGE 合并范围扫描生成的几个位图为一个位图。
BITMAP MINUS 从另一个位图减去一个位图的比特(bits)。源行用于否定谓词。仅用于:如有非否定谓词,通过减法产生一个位图。例子见:“查看位图索引与解释计划” 。
BITMAP OR 计算两个位图的按位OR。
BITMAP AND 计算两个位图的按位AND。
BITMAP KEY ITERATION 从表行源中获取每一行,并从位图索引中找到对应的位图。然后,这一组位图在后续的BITMAP MERGE操作中被合并成一个位图。
CONNECT BY . 在包含CONNECT BY子句的查询中以等级次序检索数据行
CONCATENATION . 接受多组套行的操作,返回数据集的 union-all
COUNT . 计数从表中选择行数的操作
STOPKEY 计数操作,返回的行数是由WHERE子句中的ROWNUM表达式限定
DOMAIN INDEX . 从域索引中检索一或多个ROWID。选项??列中包含用户定义的域索引成本函数所提供的信息,如果有的话
FILTER 接受一组行的操作,消除其中的一部分,并返回其余
FIRST ROW . 检索查询选定的第一行
FOR UPDATE . 检索和锁定由包含FOR UPDATE子句的查询选定行的操作

HASH JOIN

(包含连接操作。)

.

链接两组行的操作,并返回结果。此连接的方法对连接大量数据的数据集(DSS,BAtch)非常有用。连接条件是访问第二个表的有效方式。

CBO使用较小的两个表/数据源在内存中建立基于连接键的一个哈希表;然后,它会扫描较大的表,探测哈希表从中找到连接的行。

HASH JOIN ANTI Hash反连接。
HASH JOIN SEMI Hash半连接。

INDEX

(包含访问方法)

UNIQUE SCAN 从索引检索单个ROWID。
INDEX RANGE SCAN 检索一个或多个索引的ROWIDs。索引值升序的扫描。
INDEX RANGE SCAN DESCENDING 检索一个或多个索引的ROWIDs。降序索引值扫描。
INDEX FULL SCAN 没有启动或停止键时从索引检索所有的ROWIDs。升序索引值扫描。
INDEX FULL SCAN DESCENDING 没有启动或停止键时从索引检索所有的ROWIDs降序索引值扫描。
INDEX FAST FULL SCAN 使用多块读取,检索所有ROWIDs(和列值)。不定义排序顺序。仅在索引列全表扫描比较。仅适于基于成本的优化器。
INDEX SKIP SCAN 不使用索引的前导列从连接索引中检索ROWID。Oracle9i中引入。仅适于基于成本的优化器
INLIST ITERATOR . 对IN列表谓词的每个值迭代计划中的下一操作
INTERSECTION . 接受两组行的操作,并返回集合的交集,消除重复

MERGE JOIN

(含连接操作)

. 接受两组行的操作,每一按特定值排序,从一组中的每一行合并另一组的匹配行,并返回结果
MERGE JOIN OUTER 执行OUTER JOIN语句的合并联接操作
MERGE JOIN ANTI 反连接合并
MERGE JOIN SEMI 半连接合并
MERGE JOIN CARTESIAN 可生成1个或多个声明中与任何其它表没有任何连接条件的表。偶可发生在连接时,计划中也未必标记CARTESIAN
CONNECT BY . 从包含CONNECT BY子的查询中以等级次序检索行
MINUS . 接受两组行的操作,并返回第一组有但第二组无的行,消除重复行

NESTED LOOPS

(含连接操作)

. 接受两组行的操作,一组外部的和一组内部的。Oracle将内集的每一行与外集的每一行作比较,返回满足条件的行。此连接的方法对连接小的数据子集(OLTP)非常有用。连接条件是访问第二个表的有效方式。
NESTED LOOPS OUTER 执行外部联接语句的嵌套循环操作
PARTITION SINGLE 访问一个分区
PARTITION ITERATOR 访问多少个分区(子集)
PARTITION ALL 访问所有分区
PARTITION INLIST 类似迭代器,但基于一IN列表谓词(IN-list predicate)
PARTITION INVALID 表示要访问的分区集为空
对于PARTITION_START和PARTITION_STOP列中给定范围的么意义分区(PARTITION)迭代计划中的下一操作。PARTITION描述适用于单独分区对象(表或索引)或等距分割的对象(分区表及其本地索引)的分区边界。分区边界由分区(PARTITION)的PARTITION_START 和 PARTITION_STOP值提供。请参阅参分区start/stop有效值
REMOTE . 从远程数据库中检索数据
SEQUENCE . 涉及访问序列值的操作
SORT AGGREGATE 从一分组函数作用于一组选定行的结果中,检索单个行
SORT UNIQUE 排序一组行的操作,消除重复。
SORT GROUP BY 对带有GROUP BY子句的查询的行分组操作
SORT JOIN 合并-连接前排序一组行的操作
SORT ORDER BY 对带有ORDER BY子句的查询的行排序操作

TABLE ACCESS

(含访问方法)

FULL 检索表中的所有行
TABLE ACCESS SAMPLE 从一表中检索样本行
TABLE ACCESS CLUSTER 检索从基于索引簇键的值表的行
TABLE ACCESS HASH 基于索引的簇键值检索表中的行
TABLE ACCESS BY ROWID RANGE 基于rowid范围检索表中的行
TABLE ACCESS SAMPLE BY ROWID RANGE 基于rowid范围检索表中的样本行
TABLE ACCESS BY USER ROWID 如果表中的行由用户提供的ROWIDs确定
TABLE ACCESS BY INDEX ROWID 如果该表未分区和使用索引定位行
TABLE ACCESS BY GLOBAL INDEX ROWID 如果表是分区的,只使用全局索引定位行
TABLE ACCESS BY LOCAL INDEX ROWID 如果该表是分区,并使用一个或多个本地索引和可能的某些全局索引定位行

分区边界:

分区边界可能依据如下方式计算:

l  一前面的PARTITION步骤,此种情况下,复制PARTITION_START和PARTITION_STOP列值到值前PARTITION步骤,PARTITION_ID包含PARTITION步骤的ID。PARTITION_START和PARTITION_STOP的可能值为NUMBER(N)、KEY、INVALID。

l  TABLE ACCESS或INDEX的步骤本身,此这种情况下,PARTITION_ID包含本步ID。PARTITION_START和PARTITION_STOP的可能值为NUMBER(N)、KEY、ROW REMOVE_LOCATION(TABLE ACCESS)和INVALID

UNION . 接受两组行,返回集合连接(union)的操作,消除重复。
VIEW . 执行视图查询,然后返回结果行到另一操作的操作