ORACLE sql merge into update where条件位置与性能消耗

本文探讨了在Oracle数据库中使用SQL Merge时如何通过调整分区键的位置来优化执行计划,放置于ON子句中的分区键可以有效筛选分区,减少全分区扫描,降低CPU资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    环境:
    操作系统版本:linux redhat 6.6

    数据库版本:oracle 11.2.0.4

    问题描述:今天,实施同事反馈一个很奇怪的问题,就是oracle 数据库的sql merge用法问题,update语句当把分区表的分区键放在匹配关键字

On里(下边第一个图红框里的bill.table_par条件原先在update的where条件里,现在放在merge into on子句里),sql语句执行计划显示分区键能起到分区筛选作用:


    相反的,如果把update语句where条件里的分区键(下边图中红框where条件的bill.table_par)不放在merge匹配关键字on子句里,merge into update语句没能正确执行分区表分区筛选,sql语句
和执行计划如下:

总结:先说个人对本例子的理解,merge先执行on后边的条件筛选,进而进行数据匹配,匹配上则执行后续的update更新操作,所以,
将分区键放在on后边的条件匹配里,首先进行区分表分区的筛选,避免对分区表的全分区扫描,从而大大降低merge into update语句
对主机cpu资源的消耗。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值