EXPLAIN PLAN输出以及最影响性能的提示
AND-EQUAL
操作接受ROWID的多个集合,返回它们的交集并且清除重复,用在单列索引访问路径中;
hint:/*+ AND_EQUAL ( table index index(index index index)) */。
BITMAP CONVERSION
TO ROWIDS:转换位图为ROWID以用来访问行;
FROM ROWIDS:转换ROWID为位图代表;
COUNT:在实际的值不存在时范围ROWID的数量;
BITMAP INDEX
SINGLE VALUE:在索引中为一个键值查找位图;
RANGE SCAN:为一个键值范围提取位图;
FULL SCAN:执行位图索引的全表扫描。
/*+ INDEX_COMBINE ( table index, index…) */
BITMAP MERGE
接合来自一个区间扫描的多个位图到一个位图。
BITMAP MINUS
计算两个位图的MINUS操作。
BITMAP OR
计算两个位图的OR操作。
BITMAP AND
计算两个位图的AND操作。
BITMAP KEY ITERATION
从表行源中提取行并找到相应的位图。该位图集合然后接合到BITMAP MERGE操作的一个位图中。
CONCATENATION
操作返回UNION ALL操作。
COUNT
操作计算从表选择的行的数量。
STOPKEY
COUNT的WHERE中有ROWNUM限制。
DOMAIN INDEX
从域索引中提取一个/多个ROWID。
FILTER
操作接受一个行集,去除其中一部分,然后返回剩下的。
FIRST ROW
仅提取查询中的第一行。
FOR UPDATE
操作提取并锁住提取的行。
HASH JOIN
适合于连接大量行的DSS环境,连接条件高效访问第二个表。
HINT:/*+ USE_HASH ( table table…) */
HASH JOIN ANTI
哈希反连接。
HASH JOIN SEMI
哈希半连接。
INDEX UNIQUE SCAN
从索引中提取一个ROWID。
INDEX RANGE SCAN
从索引中提取一个/多个ROWID,索引值以升序扫描。
HINT:/*+ INDEX_ASC ( table, index, index…) */
HINT:/*+ INDEX_JOIN ( table index, index, index…) */
HINT:/*+ NO_INDEX ( table index...) */
INDEX RANGE SCAN DESCENDING
从索引中提取一个/多个ROWID,索引值以降序扫描。
HINT:/*+ INDEX_DESC ( table index, index…) */
INDEX FULL SCAN
提取索引中的全部ROWID,以升序扫描全部索引值。
INDEX FULL SCAN DESCENDING
提取索引中的全部ROWID,以降序扫描全部索引值。
INDEX FAST FULL SCAN
使用多块读提取全部ROWID。
HINT:/*+ INDEX_FFS ( table index,index…) */
INDEX SKIP SCAN
索引跳过扫描,通常出现在首列稀疏,后面列密集的操作中。
INLIST ITERATOR
在计划中循环执行下一次操作,直到IN列表中的值全部完成。
INTERSECTION
执行交操作。
MERGE JOIN
排序接合连接。
HINT:/*+ USE_MERGE ( table table) */
MERGE JOIN OUTER
接合连接执行外连接操作。
MERGE JOIN ANTI
接合反连接。
MERGE JOIN SEMI
接合半连接。
MERGE JOIN CARTESIAN
笛卡尔积(应该尽量避免)。
CONNECT BY
以等级顺序从一个包含CONNECT BY子句的查询中提取行。
MINUS
执行减操作,并清除重复。
NESTED LOOPS
嵌套循环,在小的结果集中是一种有效的方法。连接条件访问INNER表很有效。
HINT:/*+ USE_NL ( table ) */;声明的表为内表。
HINT:/*+ USE_NL ( table1 table2) */;1为内表。
NESTED LOOPS OUTER
嵌套循环执行外连接操作。
PARTITION SINGLE
访问一个分区。
PARTITION ITERATOR
访问多个分区(但不是全部分区)。
PARTITION ALL
访问全部分区。
PARTITION INLIST
访问多个分区(但不是全部分区),基于IN列表。
PARTITION INVALID
指示访问的分区集合为空。
REMOTE
从远程数据库提取数据。
HINT:/*+ DRIVING_SITE ( table ) */
SEQUENCE
操作调用访问一个序列的值。
SORT AGGREGATE
提取一个集合中的聚集值。
SORT UNIQUE
操作排序一个行集以消除重复。
SORT GROUP BY
使用ORDER BY子句对查询进行行排序。
SORT JOIN
排序接合前对行集进行排序。
SORT ORDER BY
使用ORDER BY子句对查询进行行排序。
TABLE ACCESS FULL
从表中提取全部行。
HINT: /*+ FULL ( table ) */。
TABLE ACCESS SAMPLE
从表中提取抽样行。
TABLE ACCESS CLUSTER
基于索引聚簇键的值提取行。
HINT:/*+ CLUSTER ( table ) */
TABLE ACCESS HASH
基于哈希聚簇键的值提取行。
HINT:/*+ HASH ( table ) */
TABLE ACCESS BY ROWID RANGE
基于rowid的范围从表中行。
HINT:/*+ ROWID ( table ) */。
TABLE ACCESS SAMPLE BY ROWID RANGE
基于rowid的范围从表中提取抽样行。
TABLE ACCESS BY USER ROWID
表通过用户提供的ROWID定位。
TABLE ACCESS BY INDEX ROWID
表不是分区的,通过索引定位行。
HINT:/*+ INDEX ( table index, index,…) */
TABLE ACCESS BY GLOBAL INDEX ROWID
表是分区的,并且仅通过全局索引定位行。
TABLE ACCESS BY LOCAL INDEX ROWID
表是分区的,并且使用一个/多个本地索引(以及一些全局索引)定位行。
UNION
操作接受两个结果集,返回一个结果集并且清除重复。
VIEW
操作执行一个视图查询,然后将结果集返回给其他操作,通常在使用内嵌视图时Oracle会使用这种操作。
HINT:/*+ LEADING ( table ) */,使用声明的表作为连接的第一个表。
MERGE_AJ, HASH_AJ, or NL_AJ放在NOT IN子查询中。
HASH_SJ, MERGE_SJ, or NL_SJ放在EXISTS子查询中。
可使用半连接估计的子查询:
·子查询中只有一个表;
·外查询块自身不是子查询;
·子查询必须通过等值谓词相关;
·子查询不包括GROUP BY, CONNECT BY, ROWNUM。
/*+ APPEND */启用直接路径加载。
/*+ NOAPPEND */禁用直接路径加载。
/*+ ALL_ROWS */
/*+ FIRST_ROWS ( n ) */
/*+ CHOOSE */
/*+ RULE */
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10508379/viewspace-985454/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10508379/viewspace-985454/