删除带有外键约束的大表的最佳方法

use*_*649 5 sql-server delete partitioning

如何清除具有 10 亿条记录的表,该表具有另一个表的外键?应该对表和子表进行分区并使用分区交换吗?

小智 1

尝试这个:

  1. 在具有类似结构的新表中插入 3 个月的数据:
declare @CurDate datetime
select * 
into NewTable
from ExistingTable 
where datecol >= @CurDate and datecol <= dateadd(month,3,@CurDate)
Run Code Online (Sandbox Code Playgroud)
  1. 将旧表重命名为任何唯一的名称或根据要求删除表
  2. 将新表重命名为现有表
  3. 插入具有类似结构的 NewChildTable ,与步骤 3 的新父表匹配
  4. 重命名或删除现有子表
  5. 将新子表重命名为现有子表