oracle hints的使用

gholay發表於2014-04-08
優化器模式:all_rows  , first_rows
資料訪問路徑: 基於表的資料訪問, 基於索引的資料訪問
表關聯的方式:NL , MJ , HJ

使用hints儘量避免在開發中使用。一般在dba層面去使用。一般也只加優化器模式,其它的
hints最好不用。

全表掃描 :
select /*+ full(t) */ from t where object_id=  100 ;
如果全表掃描,消耗的一致性讀會很多。如果 用索引,會消耗很少。
index的使用
select /*+ index(t idx_t) */ * from t where object_id>10 ;
noindex的使用
select /*+ no_index(t idx_t) */ count(object_id) from t ;
FFS(fast full scan)掃描
select count(object_id) from t ; 此時會按索引來掃描,速度很快。
而如果使用select /*+ full(t) */ count(*)  from t  ; 則會使用全表掃描。

index range scan 適用於範圍很少的掃描
index fast scan 適用於索引的統計。

表的關聯的hints
NL: /*+use_nl*/ Nested loop joins 
eg: select /*+use_nl*/ t.* from t,t1 where t.object_id=t1.object_id ;
NL的使用場景 :
 外表比較小,內表的關聯欄位上有索引,索引的鍵值不應該重複率很高。

HJ的使用場景 :
 一個大表,一個小表的關聯 ,表上沒有索引,返回結果集比較大。




















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1138173/,如需轉載,請註明出處,否則將追究法律責任。

相關文章