ITPub博客

首页 > 数据库 > Oracle > EXPLAIN PLAN输出以及最影响性能的提示

EXPLAIN PLAN输出以及最影响性能的提示

原创 Oracle 作者:aqcjsy 时间:2007-11-27 22:12:04 0 删除 编辑
EXPLAIN PLAN输出以及最影响性能的提示[@more@]

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

COUNTWHERE中有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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-14

  • 博文量
    3
  • 访问量
    6054