如何快速删除具有1b记录的表中的某些记录

时间:2016-07-12 01:42:28

标签: sql-server

我有一个或多或少有1b记录的表,并且它将数据保存在180天内,因此我需要删除那些超过180天的记录。

首先,我只是使用delete删除记录,花了将近1小时,然后,我每天都尝试creat table并将数据保存到当天的表格中,{ {1}}表格超过180天。

有没有更好的方法来删除这些记录,我不认为我的第二种方式是有益的。

对不起我的英语很差,但请帮帮忙!

谢谢!

1 个答案:

答案 0 :(得分:0)

以下解决方案可能会有所帮助。

  • 更改数据库的Recovery Mode to SIMPLE
  • 以块的形式删除数据

像:

DECLARE @Deleted_Rows INT
SET @Deleted_Rows = 1;


WHILE (@Deleted_Rows > 0)
  BEGIN
 BEGIN TRANSACTION
//--Delete some small number of rows at a time
 DELETE TOP (10000)  LargeTable 
 WHERE readTime < dateadd(MONTH,-7,GETDATE())


SET @Deleted_Rows = @@ROWCOUNT;

COMMIT TRANSACTION
CHECKPOINT -- for simple recovery model


END
  • 将恢复模式更改回完整

希望它有所帮助!