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

  • Post author:
  • Post category:其他


根据甲方要求,需要对历史数据的指定字段进行批量更新,经过统计发现生产数据高达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 实现“存在即更新,不存在则插入”批量操作,可以大大减少数据库链接操作(这里仅思路,未验证过)



版权声明:本文为pamda原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。