4

mysqlデータベースから重複レコードを削除しようとしています。以下のコマンドを使用すると、すべての重複が削除され、1行が保持されます。私のデータベースには300,000のレコードがあり、約100,000行が重複していると思います。

以下のコマンドで重複を削除する必要がありますが、問題は、9時間後の夕方にコマンドを実行していたことです。

 DELETE n1 FROM tableA n1,tableA n2 WHERE n1.title= n2.title AND n1.id > n2.id

何が起こっている?誰か説明できますか?

4

1 に答える 1

4

試してみる:

select * from tableA as n1 join tableA as n2 on n1.title = n2.title AND n1.id > n2.id;

そしてそれを説明するために:n1.title = n2.titleインデックスを使用しません。

このクエリはより良いものになります:

delete from `t2` where `id` in (
    select cid from (
       select max(id) as cid from t2 group by title having count(*) > 1
    ) as c
);
于 2012-10-06T05:39:03.360 に答える