根据甲方要求,需要对历史数据的指定字段进行批量更新,经过统计发现生产数据高达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 版权协议,转载请附上原文出处链接和本声明。