如何更快地删除大型SQL Server中的数据?

时间:2014-03-31 22:22:54

标签: sql-server sql-server-2008

我有一个SQL Server数据库。大小约为150GB,可以节省一些数据用于分析。每天都有新数据进入,我们需要删除旧数据(基于日期)。最近,每日数据量增加很多,很快就会达到每天8-9GB左右。

目前,我们以小批量删除,这需要很长时间才能完成。是否有一般指南使其更快?尝试删除前删除/禁用索引,删除完成后再重建索引。它没什么用。

或者,这完全取决于实际日期?

由于

1 个答案:

答案 0 :(得分:2)

考虑到我将使用分区表的数据量,每天一个。

进出交换分区将是删除一天所有数据的最快方法。

编辑:由于截断分区并不像在SQL Server中那样简单,我想我会提供更多详细信息,以防您不熟悉分区

在SQL Server的下一个版本中,您应该只能TRUNCATE PARTITION或类似的东西。在此期间,您必须按照以下步骤进行操作:

删除数据库中一天数据的最快方法是将表分区为白天,然后:

  1. 将要删除的分区换成另一个表:ALTER TABLE partitioned SWAP PARTITION n TO otherTableToDelete

  2. TRUNCATE TABLE otherTableToDelete