環(huán)境:
操作系統(tǒng)版本:linux redhat 6.6
數(shù)據(jù)庫版本:oracle 11.2.0.4
問題描述:今天,實施同事反饋一個很奇怪的問題,就是oracle 數(shù)據(jù)庫的sql merge用法問題,update語句當(dāng)把分區(qū)表的分區(qū)鍵放在匹配關(guān)鍵字
On里,sql語句執(zhí)行計劃顯示分區(qū)鍵能起到分區(qū)篩選作用:
相反的,如果把update語句where條件里的分區(qū)鍵不放在merge匹配關(guān)鍵字on里,merge into update語句沒能正確執(zhí)行分區(qū)表分區(qū)篩選,sql語句
和執(zhí)行計劃如下:
總結(jié):先說個人對本例子的理解,merge先執(zhí)行on后邊的條件篩選,進而進行數(shù)據(jù)匹配,匹配上則執(zhí)行后續(xù)的update更新操作,所以,
將分區(qū)鍵放在on后邊的條件匹配里,首先進行區(qū)分表分區(qū)的篩選,避免對分區(qū)表的全分區(qū)掃描,從而大大降低merge into update語句
對主機cpu資源的消耗。
分享標(biāo)題:ORACLEsqlmergeintoupdatewhere條件位置與性能消耗
URL網(wǎng)址:
http://weahome.cn/article/gigjgj.html