小编典典

在t-sql中删除所有大表的最佳方法是什么?

sql

我们遇到了一个有点奇怪的情况。基本上,在我们的数据库之一中有两个表,它们填充了我们不需要或不关心的大量日志信息。部分原因是因为我们磁盘空间不足。

我正在尝试清理表,但它要花很长的时间(让它运行到周末后仍然有57,000,000条记录…而那只是第一张表!)

仅使用删除表将永久占用并占用驱动器空间(我相信是由于事务日志。)现在,我正在使用while循环一次删除记录X,同时使用X来确定实际上最快的记录。例如,X =
1000需要3秒钟,而X = 100,000需要26秒钟…这在数学上稍快一些。

但是问题是是否有更好的方法?

(完成此操作后,要运行SQL Agent作业,请每天清理一次表…,但需要先将其清除。)


阅读 163

收藏
2021-04-22

共1个答案

小编典典

删除前
截断 表或禁用索引

TRUNCATE TABLE [tablename]

截断将从表中删除所有记录,而无需分别记录每个删除。

2021-04-22