1. 执行路径提示
ALL_ROWS
FIRST_ROWS(n)
2.访问方法提示
FULL
INDEX、INDEX_ASC、INDEX_DESC
NO_INDEX、NO_INDEX_FFS、NO_INDEX_SS
INDEX_COMBINE
INDEX_JOIN
INDEX_FFS #实行索引的快速全扫描,全部的索引值不经过排序就被读出来。INDEX_FFS表示只访问索引,不访问对应的表(换言之,就是不回表)
INDEX_SS、INDEX_SS_ASC、INDEX_SS_DESC
3、查询转换提示
FACT、NO_FACT
MERGE、NO_MERGE
USE_CONCAT、NO_EXPAND
NO_QUERY_TRANSFORMATION
REWRITE、NO_REWRITE
STAR_TRANSFORMATION、NO_STAR_TRANSFORMATION
UNNEST、NO_UNNEST
4、连接操作提示
LEADING、
ORDERED #表示强调表的连接顺序
USE_HASH、NO_USE_HASH #将来自多个表的很多行连接在一起的最快途径,需要大量的内存。用其中一个表的结果遍历连接表的结果。所不同是:第二个表是放在内存里的,它通常应该两个表较小的那个。从employees表返回的行和这些行在departments表中匹配的行一起处理,这些匹配的行被哈希到内存中。departments中匹配到第一行就立即返回给用户,而不是等全部结果再返回。该方法为大的结果集提供最佳的响应时间。
USE_MERGE、NO_USE_MERGE #表示优化器使用 merge join操作。两个表返回的行均会被排好序,然后合并形成最终的结果集;每个行集都是先排好序然后进行归并。
USE_NL、USE_NL_WITH_INEX、NO_USE_NL #USE_NL 表示嵌套循环
5、并行执行提示
PARALLEL、NO_PARALLEL
PARALLEL_INDEX、NO_PARALLEL_INDEX
6、其他提示
APPEND、NOAPPEND
CACHE、NOCACHE #将全表扫描全部缓存到内存中,未来查询访问该表时,就会在内存中找到他,而不是扫描磁盘。
DIRVING_SITE
DYNAMIC_SAMPLING
PUSH_PRED\NO_PUSH_PRED
PUSH_SUBQ\NO_PUSH_SUBQ
RESULT_CACHE\NO_RESULT_CACHE
用法示例:
1、select /*+ FLULL(table) */ col1,.........
2、select /*+ index(employees emp_id_pk) */ col1,........
3、select /*+ FULL(EMPLOYESS) CACHE(employees) */
4、select /*+ ALL_ROWS */ col1,.....
5、select /*+ NO_INDEX(tabname idx1) INDEX(tabname idx2) */