【发布时间】:2013-06-29 16:37:54
【问题描述】:
我们有一个包含大约 150 万条记录的表。这个表有很多来自不同表的外键关系。
问题是 100 万条记录只是重复的,必须删除。我们当时尝试删除 1000 条记录,但这是一个非常缓慢的过程。
我的想法是将必须保留的临时记录复制到新表中。 截断现有的并复制必须保留的记录。恢复主键和与其他表的所有关系。所以从客户端你看不出有什么区别。
不确定这是否是一种有效的方法。
如果是的话,我很想看到它的基本实现,这样我就可以遵循并申请我的案例。 如果没有,我希望看到有效的方法。
谢谢
【问题讨论】:
-
这是一次性清理,还是您的系统养成了复制数据的习惯?
-
您在列上是否有一个索引来过滤掉要删除的行?
-
禁用索引,然后将唯一数据500K复制到表B中,然后截断并删除原始表,然后将B重命名为原始名称,然后进行索引
-
@German,就像索引一样,也添加关系,或者如果关系太多和复杂,禁用索引,将重复数据移动到表 B 然后重新创建索引(不启用它),我认为,索引是您将过程视为蜗牛移动的原因
-
您不能截断带有 FK 的表。
标签: sql sql-server sql-server-2008