oracle筆記整理12——效能調優之hint標籤

thinkpadshi發表於2016-01-16

提示裡不區分大小寫, 多個提示用空格分開;
如果表使用了別名, 那麼提示裡也必須使用別名;

1) 優化器相關hint

a) /+ALL_ROWS/
表明對語句塊選擇基於cost的優化方法,並獲得最佳吞吐量,使資源消耗最小化

b) /+FIRST_ROWS/
表明對語句塊選擇基於cost的優化方法,並獲得最佳響應時間,使資源消耗最小化.

c) /+CHOOSE/
表明如果資料字典中有訪問表的統計資訊,將基於開銷的優化方法,並獲得最佳的吞吐量;
表明如果資料字典中沒有訪問表的統計資訊,將基於規則開銷的優化方法;

d) /+RULE/
表明對語句塊選擇基於規則的優化方法.

2) 訪問路徑相關hint

a) /+FULL(TABLE)/
表明對錶選擇全域性掃描的方法.

b) /+ INDEX(TABLE INDEX_NAME) /
表明對錶選擇索引的掃描方法.

3) 表關聯相關hint

a) /+LEADING(TABLE)/
在多表關聯查詢中,指定哪個表作為驅動表

b) /+ORDERED/
讓Oracle根據from後面表的順序來選擇驅動表,oracle建議使用leading,更為靈活

c) /+ use_nl(table_1,table_2) /
在多表關聯查詢中,指定使用nest loops方式進行多表關聯。

d) /+ use_hash(table_1,table_2) /
在多表關聯查詢中,指定使用hash join方式進行多表關聯。

e) /+ use_merge(table_1,table_2) /
在多表關聯查詢中,指定使用merge join方式進行多表關聯。

4) 其他hint

a) /+ parallel(table_name n) /
在sql中指定執行的並行度,這個值將會覆蓋自身的並行度。

b) /+ append /
以直接載入的方式進行資料載入,多用於insert語句。

相關文章