oracle提高merge更新效率,使用Merge INTO优化SQL,性能提升巨大

说说背景:开发有个需求,需要对新加的一个字段根据特定的业务逻辑更新数据。

TPS_TRADE表数据有4000多万,TPS_EXTERNAL_REF表3600多万,TPS_ACCOUNT表8200多万。

开发的SQL如下:

UPDATE TPS_TRADE a

SET a.OPEN_LOT_QTY =

(

SELECT a.trade_qty - nvl(sum(c.TRADE_QTY),0)

FROM TPS_TRADE c,

TPS_EXTERNAL_REF d

WHERE c.id=d.TPS_TRADE_FK_ID

AND c.BUY_SELL='S'

AND d.value1 = a.BO_TRADE_NUM

AND d.EXT_REF_TYPE='LINKED_LOT_ID'

AND c.TRADE_STATUS='ACTV'

)

WHERE EXISTS

(

SELECT 1 FROM TPS_ACCOUNT b

WHERE b.TPS_TRADE_FK_ID=a.id

AND b.ACCOUNT_MNEMONIC IN ('CTSCCLH','CTSRNHT','CTSRTHT','CTSRYCP','CTSCAU','CTSCCB','CTSCCLO','CTSCCR','CTSCGG','CTSCOA','CTSCSL1','CTSCSL2','CTSCSRI',

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值