我们遇到了一个有点奇怪的情况。基本上,在我们的数据库之一中有两个表,它们填充了我们不需要或不关心的大量日志信息。部分原因是因为我们磁盘空间不足。
我正在尝试清理表,但它要花很长的时间(让它运行到周末后仍然有57,000,000条记录…而那只是第一张表!)
仅使用删除表将永久占用并占用驱动器空间(我相信是由于事务日志。)现在,我正在使用while循环一次删除记录X,同时使用X来确定实际上最快的记录。例如,X = 1000需要3秒钟,而X = 100,000需要26秒钟…这在数学上稍快一些。
但是问题是是否有更好的方法?
(完成此操作后,要运行SQL Agent作业,请每天清理一次表…,但需要先将其清除。)
删除前 截断 表或禁用索引
TRUNCATE TABLE [tablename]
截断将从表中删除所有记录,而无需分别记录每个删除。