6.4常見的Hint《基於Oracle的優化(學習筆記)》
阿新 • • 發佈:2018-12-21
與優化器相關的Hint
/*+ ALL_ROWS */
它的含義是啟用CBO
/*+ FIRST_ROWS(n) */
優化器啟用CBO,而且依據返回頭n條的記錄的響應時間來決定SQL的執行計劃。
注意,first_rows(n)與first_rows_n並不是一一對應的
/*+ RULE */
如果目標SQL使用了並行執行,就意味著其中的RULE Hint會失效,此時Oracle會自動啟用CBO。
如果目標SQL所涉及的物件有分割槽表,就意味著目標SQL中的RULE Hint會失效,此時Oracle會自動啟用CBO。
如果目標SQL所涉及的物件有IOT(Index Organization Table
與訪問相關的Hint
/*+ FULL(目標表) */
全表掃描,而不考慮目標表的索引
/*+ ROWID(目標表) */
它的含義是讓優化器對目標表執行ROWID掃描。
與索引訪問相關的Hint
/*+ INDEX(目標表 索引) */
/*+ INDEX(目標表 索引1 索引2 ......索引n) */
/*+ INDEX(目標表 (索引1的索引列名)(索引2的索引列名)........(索引n的索引列名) )
/*+ INDEX(目標表) */
/*+ NO_INDEX(目標表 索引)*/
/*+ NO_INDEX(目標表 索引1 索引2......索引n) */
/*+ NO_INDEX(目標表) */
/*+ INDEX_DESC(目標表 索引) */
/*+ INDEX_DESC(目標表 索引1 索引2 ...... 索引n) */
/*+ INDEX_DESC(目標表) */
/*+ INDEX_COMBINE(目標表 索引1 索引2 ...... 索引n) */
/*+ INDEX_COMBINE(目標表) */
/*+ INDEX_FFS(目標表 索引) */
/*+ INDEX_FFS(目標表 索引1 索引2 ....... 索引n) */
/* INDEX_FFS(目標表) */
/*+ INDEX_JOIN(目標表 索引1 索引2 ...... 索引n) */
/*+ INDEX_JOIN(目標表) */
/*+ AND_EQUAL(目標表 索引1 索引2 ...... 索引n) */
與表連線相關的Hint
/*+ ORDERED */
/*+ LEADING(目標表1 目標表2 目標表3 ...... 目標表n) */
與表連線方法相關的Hint
/*+ USE_MERGE(目標表1 目標表2 ....目標表n) */
/*+ USE_MERGE(目標表1,目標表2, ....目標表n) */
/*+ NO_USE_MERGE(目標表1 目標表2 目標表3 ...... 目標表n) */
/*+ NO_USE_MERGE(目標表1,目標表2,目標表3,....... 目標表n) */
/*+ USE_NL(目標表1 目標表2 目標表3 ...... 目標表n) */
/*+ USE_NL(目標表1,目標表2,目標表3, ....... 目標表n) */
/*+ NO_USE_NL(目標表1 目標表2 目標表3 ...... 目標表n) */
/*+ NO_USE_NL(目標表1,目標表2,目標表3, ....... 目標表n) */
/*+ USE_HASH(目標表1 目標表2 目標表3 ...... 目標表n) */
/*+ USE_HASH(目標表1,目標表2,目標表3, ....... 目標表n) */
/*+ NO_USE_HASH(目標表1 目標表2 目標表3 ...... 目標表n) */
/*+ NO_USE_HASH(目標表1,目標表2,目標表3, ....... 目標表n) */
/* MERGE_AJ */
/*+ NL_AJ */
/*+HASH_AJ */
/*+ MERGE_SJ */
/*+ NL_SJ */
/*+ HASH_SJ */
與查詢轉換相關的Hint
/*+ USE_CONCAT */
/*+ NO_EXPAND */
/*+ MERGE(目標檢視) */
/*+ NO_MERGE(目標檢視) */
/*+ UNNEST */
/*+ NO_UNNEST */
/*+ EXPAND_TABLE */
/*+ NO_EXPAND_TABLE */
與並行相關的Hint
/*+ PARALLEL */
/* PARALLEL(AUTO) */
/* PARALLEL(MANUAL) */
/* PARALLEL(指定的並行度) */