Oracle 百万级连表更新merge替代update实现快速高效更新

        根据甲方要求,需要对历史数据的指定字段进行批量更新,经过统计发现生产数据高达6百万的数据量,需要更新的数据也有三百多万,还需要连表查询。

开始使用update 语句直接更新的时候发现,50分钟都未能更新完成,

使用了merge 后,2分钟内即可更新完成。这里简要记录下使用

merge into table1 t1
    using (select  table1.clu1, table.clu2 from table1 from table1.clu3='0') t2

on  (t1.clu1=t2.clu1)  -- 两张表的关联条件,t2 表必须查到的结果唯一

when matched then update set t1.clu2 = t2.clu2 ;  --如果查到t2表数据则进行更新t1 表字段

commit; 

when matched then  还支持insert ,所以我想大数据的时候,还可以通过此sql 实现“存在即更新,不存在则插入”批量操作,可以大大减少数据库链接操作(这里仅思路,未验证过)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值