ORACLE sql merge into update where條件位置與效能消耗

清風艾艾發表於2018-03-19
    環境:
    作業系統版本:linux redhat 6.6
    資料庫版本:oracle 11.2.0.4
    問題描述:今天,實施同事反饋一個很奇怪的問題,就是oracle 資料庫的sql merge用法問題,update語句當把分割槽表的分割槽鍵放在匹配關鍵字
On裡,sql語句執行計劃顯示分割槽鍵能起到分割槽篩選作用:

    相反的,如果把update語句where條件裡的分割槽鍵不放在merge匹配關鍵字on裡,merge into update語句沒能正確執行分割槽表分割槽篩選,sql語句
和執行計劃如下:

總結:先說個人對本例子的理解,merge先執行on後邊的條件篩選,進而進行資料匹配,匹配上則執行後續的update更新操作,所以,
將分割槽鍵放在on後邊的條件匹配裡,首先進行區分表分割槽的篩選,避免對分割槽表的全分割槽掃描,從而大大降低merge into update語句
對主機cpu資源的消耗。

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

相關文章