2014-11-05 56 views
0

我们有这个大的'收藏'表,我们遇到了一个问题,发现我们没有对user,favorite_typefavorite_type的唯一约束的事实, favorite_id。我已经做了一个迁移,将为这3个索引添加一个索引,但它不起作用,因为我们现有的数据具有相同的一组条目。那里面有其他数据太(updated_atcreated_atid)这是没有失去,反而使得它的不完美匹配。大表中的重复条目在多列中共享相同的值

是否有轨道的方式(3.2.x中)要做到这一点,或(my)SQL的方式?

我知道我可以将它们全部拉出来,然后分组,然后映射到所有额外元素的删除,但它是一个非常大的表(1mil +),我们不能进行长时间运行的迁移。

回答

2

复制表结构到新表,添加唯一约束,然后将所有的记录。由于约束,重复项将失败。

CREATE TABLE tableTmp LIKE table; 

添加约束,然后将所有记录插入到临时表中。

INSERT INTO tableTmp SELECT * FROM table 

验证条目然后删除并重命名。

DROP TABLE table; 
RENAME TABLE tableTmp TO table; 
+0

Hmhm,将工作。我会给你勾选了一天,想看看是否有人有一些巧妙的导轨招我没有想到的,但我有一种感觉,用自己的方式将是最好的。 – 2014-11-05 00:47:41

相关问题