在表正在使用时删除许多行

时间:2016-08-24 09:45:11

标签: sql-server delete-row sql-server-2014-express

如果要删除大量的行,则删除数据库中的行是非常昂贵的过程。

我已经尝试使用CHECKPOINT在每行50000行(需要3-10秒)上运行批量删除,在20mln行的表上删除大约一半,而表正在使用中。在完成这项工作的同时,它减慢了对数据库的访问速度,整个系统及时停止响应。

我可以做些什么来定期删除旧版本而不会过度减慢系统速度?

提到的表有很长的行(数百列),按时间排序(最新更新/插入),我们经常选择最新的,但删除最旧的。

1 个答案:

答案 0 :(得分:0)

将过滤的行复制到临时表,截断表并插入新截断的表可以更好地工作。