清理一张疯狂的大桌子

时间:2019-03-05 16:34:33

标签: sql-server-2008

我有一个备份表,由于一个数学不好的程序员对计划的管理不善,其中有3.5亿条记录。数据驱动器几乎已满,性能正在下降。我需要清理该表,但是仅一个简单的SELECT COUNT(1)语句就需要30分钟或更长时间才能返回。

表上没有主键。

数据库使用SIMPLE日志记录。该驱动器上只剩下25gb,因此我需要注意,我所做的一切都必须为数据库留出空间,以便其他人继续运行。输入此命令时,我正在等待确认,但我认为我不需要保留其中的任何数据。

在具有很多记录的表上,TRUNCATE TABLE是否会使系统停止运行?

也正在研究此处提出的解决方案:How to delete large data of table in SQL without log?

这个想法是让我的客户在我做这一切的同时继续工作。

1 个答案:

答案 0 :(得分:0)

如果您不再需要记录,则截断表将起作用。这不会减少数据库的大小。如果需要这样做,则需要缩小数据文件。

如果您宁愿删除记录,亚伦·伯特兰(Aaron Bertrand)都有很好的例子和测试结果,他确实在这里找到:https://sqlperformance.com/2013/03/io-subsystem/chunk-deletes