看到一篇文章 先引用起來
如果SQL中有兩個table outer join 有太多nested loop的問題,造成cost很高 , 可以採用以下Oracle 建議的hint 測試
To perform this outer join, 3 different join techniques have been provided by oracle.
· Nested loop outer join : USE_NL(tab a b)
· Hash outer join : USE_HASH(tab a b)
· Sort merge outer join : USE_MERGE(tab a b])
Nested loop join :
適用兩個小的表格做join
Hash join :
1.適用兩個大table, 或是一小, 一大表格的join
使用小表格中的pk, 擁有不多的distinct value, 會產生一個hash table到memory, 讓
表格的join 速度加快
2.適用equal join (join 的欄位使用=等號)
Merge join :
適用於 non-equal join( > , < , <=) , 或是已經sort 過的資料表格(透過index range scan撈到的資料)
沒有留言:
張貼留言