SQLSERVER 某个表更新完数据后向另外一张表插入更新之后的数据,表结构相同,且数据量庞大,50W条。

现有一张表,数据量50W左右(每天),需要将其中的FLAG字段更新成“0”之后,将更新之后的数据插入到另外一张表(表结构相同)。之前是单纯写UPDATE INSERT 执行太耗时间,数据处理很慢。

存储过程如何完成上述操作(更新一条数据后向另外一张表插入更新之后的数据)并记录执行时间。

如果是单条记录及时更新,可以用触发器实现;如果不是实时更新,可以用存储过程。

你如果改成一条一条处理的话,估计会更慢,比较合适的方法是,你不要对所有50w都更新成0,而是使用循环批量更新,
每次只更新其中的一部分,比如说1000条,然后根据flag=0的这个条件把这1000条数据插过去,打上已插入完成的标记,然后再去更新1000条flag=0,一直循环,直到没有需要更新的数据了,就完成了