千家信息网

如何提升SQLServer Delete数据的效率

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,场景:对一张3亿的大表进行Delete。通过中间表实现。先把需要归档的数据写入历史表Cou_History..Cou_History。把需要删除表的字段条件写入中间表。select SysNo int
千家信息网最后更新 2025年02月09日如何提升SQLServer Delete数据的效率

场景:

对一张3亿的大表进行Delete。

通过中间表实现。

先把需要归档的数据写入历史表Cou_History..Cou_History。

把需要删除表的字段条件写入中间表。

select SysNo into COU_temp01

FROM COU

WHERE EXISTS (SELECT 1 FROM Cou_History..Cou_History a WHERE a.SysNo=COU.SysNo)

然后用中间表作为中间条件去删除主表的相关数据。再删除已经在主表删除的中间表字段数据。

以下SQL循环执行,直到全部删除完毕。

DELETE TOP(1000)

from COU

where SysNo in

(select top 1000 * from COU_temp01)

delete top(1000) from COU_temp01

0