[SQL Server 2012]关于对海量数据进行批量更新的问题
请教大家一个SQL Server 2012对海量数据进行批量更新的问题:
我正在维护的系统中有一个表,有超过1000万条记录。最近进行了一项改造,需要每天从上游系统接收有更新的数据,约300万条记录,更新数据以文件的方式传送到本系统。本系统需要做的事情是将更新数据的所有字段更新(如果按主键在表中找到记录)或插入(如果按主键在表中未找到记录)表中。
目前的办法是:
1 创建一个结构与上面的表相同的表(以下称前者为A,后者为B)
2 使用bcp将更新数据导入到表B中
3 执行以下SQL删除表A中的数据:
delete from 表A inner join 表B on 表A.主键字段 = 表B.主键字段
4 执行以下SQL将表B中的所有数据添加到表A中:
insert into 表A select * from 表B
以上办法的效率很低,执行第3步都需要几个小时,必须进行优化。请问大家有什么好的建议?