Oracle使用的hints調整機制一直很復雜
spread_min_analysis
使用這一hint
由於在規則數非常大的情況下
例如
SELECT /*+ SPREAD_MIN_ANALYSIS */
spread_no_analysis
通過這一hint
例如
SELECT /*+ SPREAD_NO_ANALYSIS */
use_nl_with_index
這項hint使CBO通過嵌套循環把特定的表格加入到另一原始行
例如
SELECT /*+ USE_NL_WITH_INDEX (polrecpolrind) */
CARDINALITY
此hint定義了對由查詢或查詢部分返回的基數的評價
例如
SELECT /*+ CARDINALITY ( [tablespec] card ) */
SELECTIVITY
此hint定義了對查詢或查詢部分選擇性的評價
例如
SELECT /*+ SELECTIVITY ( [tablespec] sel ) */
然而
no_use_nl
Hint no_use_nl使CBO執行循環嵌套
例如
SELECT /*+ NO_USE_NL ( employees ) */
no_use_merge
此hint使CBO通過把指定表格作為內部表格的方式
例如
SELECT /*+ NO_USE_MERGE ( employees dept ) */
no_use_hash
此hint使CBO通過把指定表格作為內部表格的方式
例如
SELECT /*+ NO_USE_HASH ( employees dept ) */
no_index_ffs
此hint使CBO拒絕對指定表格的指定標簽進行fast full
Syntax: /*+ NO_INDEX_FFS ( tablespecindexspec ) */
no_index_ss
此hint使CBO拒絕對指定表格的指定標簽進行skip scan
Syntax: /*+ NO_INDEX_SS (tablespecindexspec ) */
no_star_transformation
此hint使CBO忽略star 詢問信息
Syntax: /*+ NO_STAR_TRANSFORMATION */
index_ss
此hint明確地為指定表格選擇index skip scan
Syntax: /*+ INDEX_SS (tablespecindexspec) */
index_ss_asc
此hint明確地為指定表格選擇index skip scan
Syntax: /*+ INDEX_SS_ASC (tablespecindexspec) */
index_ss_desc
此hint明確為指定表格選擇index skip scan
Syntax: /*+ INDEX_SS_DESC (tablespecindexspec) */
cpu_costing
此hint為SQL語句打開CPU costing
Syntax: /*+ CPU_COSTING (tablespecindexspec) */
no_cpu_costing
此hint為SQL語句關閉CPU costing
Syntax: /*+ NO_CPU_COSTING */
隨著Oracle優化器越來越成熟
From:http://tw.wingwit.com/Article/program/Oracle/201311/16790.html