我试图从我的数据库中删除重复的行,所以我使用这个查询
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;