SQL:如何在不干扰服务器的情况下从表中删除数百万条记录

5 sql-server

我们的一个软件失控了,确实在一个表中放入了数百万/数十亿条记录。如何在不干扰服务器的情况下删除它们?

这是我尝试过的: - 将事务日志设置为简单 - 在脚本中批量删除它们 - 将虚拟机放在 SSD 上我还是花了 3 周才中止。

我真的不想复制我想保留的数据然后删除表。

Pat*_*ick 2

如果您正在批量运行删除,那么您在用于分块进程的列上是否有索引?如果没有索引并且查询采用全表扫描来尝试查找应删除的数据,则可能会在该过程中增加大量时间。

不幸的是,备份好数据然后删除/截断表可能是您最好的选择。您始终可以重命名现有表并创建一个新表来执行此操作,而不是尝试仅提取需要保留的数据。这样,如果您发现初始加载的数据缺失,您仍然可以返回所有内容进行第二次查看。