我有一个庞大的数据库,其中包含一个包含数十亿条记录的表。我需要每月清理一次该表(根据日期字段删除最旧的记录)。
由于我需要为一个月的数据删除几亿条记录,因此执行DELETE
甚至删除块会花费太长时间,因为索引会减慢进程。
bcp data out + truncate + bcp data in也太长了。
现在我想尝试的解决方案是将表分区为不同的文件组(每个分区一个月)。我得到了构建分区的部分,但是如何删除文件组及其数据?
答案 0 :(得分:1)
您可以将分区切换到新表,然后删除该表。除了您切换到的表必须位于同一文件组的限制之外,文件组与它实际上没有任何关系。您不一定要将分区映射到单独的文件组,尽管出于其他原因可能需要这样做。
Here's a good example of a partition-wise rolloff in sql server