大数据量联合主键的插入更新解决方案

面对一亿条数据的大表,四个字段的联合主键导致插入更新效率低下。通过建立新表并使用左连接删除重复数据的方法在100W数据中更新10W数据耗时45分钟。最终采用MERGE INTO语句,结合KETTLE工具,形成完整的数据插入更新流程,实现在九千万数据中更新5W数据仅用五分钟,20W数据在30分钟内,大幅提高效率。
摘要由CSDN通过智能技术生成

      数据量大了之后想对一张表的数据进行插入/更新就会非常慢!目前环境是一张主表数据量在一亿的样子,之前做插入更新处理是用的KETTLE抽取工具,然而这张表是四个字段的联合主键,这样判断起来效率就会非常低,现在跑任务直接会卡死不动。网上找了一些类似的解决方案:建一张新表B,跟原表A的表结构相同,把每次导入的数据全部导入B表中,然后用左外连接把重复的数据删除(DELETE FROM  A WHERE A.ID IN(SELECT B.ID FROM  B  LEFT JOIN A ON B.ID = A.ID) ),然后执行(INSERT INTO A SELECT * FROM B),最后删除B表的数据,网上说测试发现不到一分钟就可以在一百万数据中完成十万数据的导入。这的确是一种方法,但是如果是联合主键或者主表的数据量非常大基本就废了,经测试100W的数据插入更新10W数据,更新的这张表是四个字段的联合主键,所需时间在45分钟,如果数据量继续增大,那么显然这种方式是肯定不能满足需求的。最后解决方式是通过MERGE INTO的方式解决,示例如下:

--原始表
CREATE TABLE PRODUC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值