是否有任何快速SQL查询删除重复的行


Is there Any Quick SQL Query to Remove Duplicate Rows

我试图从我的数据库中删除重复的行,所以我使用这个查询

DELETE  FROM data
WHERE data.ID NOT IN (
                     SELECT * FROM ( 
                                    SELECT MIN(ID)  FROM data GROUP BY Link
                                   ) AS p 
                      ) 

它工作得很好,但问题是我的数据库有超过100万行,所以当我使用这个时,它需要时间的地狱,就像4到5小时后,它仍然在加载。然后我就合上了账单。所以请如果有人有更好的查询告诉我。提前感谢

表结构http://s29.postimg.org/bt57k5enb/image.jpg

一个解决方案是:


1)创建临时表
2)为每个Link列存储单个记录
3)截断data表
修改data表(添加UNIQUE KEY约束)
从temp表中重新导入数据表,并删除tmp表

1&2) CREATE TABLE tmp AS SELECT * FROM data GROUP BY Link;
3) TRUNCATE TABLE data; -- disable foreign key constraints if any 
4) ALTER TABLE data ADD UNIQUE KEY data_link_unique(Link);
5) INSERT INTO data SELECT * FROM tmp;