2017-09-20 2 views
0

私は大きなテーブルを持っています。私は重複を見つける、このテーブルは10列(A、B、C、Dなどと言うことができます)などがあります。重複したレコードを取得するためにクエリの下で実行していますが、1時間以上かかる。 クエリ:大きいテーブルで複製を確認する

SELECT COUNT(*) FROM TABLE1 GROUP BY A,B,C,D,E HAVING COUNT(*) >1 

誰かが私にこれを成し遂げるためのより高速な方法を提案することができます。

+0

異なる値を持つすべての列が必要ですか? –

+0

テーブルの行数は正確ですか?そして、どのようなハードウェアですか?多くのことが、クエリだけでなく、パフォーマンスに影響を与える可能性があります。とにかく、これが一回限りの操作であれば、少し時間がかかりますか?ただし、重複を削除するために定期的にこの作業を行っていますが、なぜ、重複を最初に作成できないように、テーブルの主キーを変更しないでください。 – ADyson

+0

重複行を見つけた後に削除しようとすると、これを参照してください - https://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql –

答えて

0

このクエリを適用してパフォーマンスを確認してください!

SELECT count(*) FROM tbl_name mt 
JOIN 
(SELECT A,B,C,D,E FROM tbl_name GROUP BY A,B,C,D,E HAVING COUNT(*) >1) T 
ON mt.A= T.A 
and mt.B= T.B 
and mt.C= T.C 
and mt.D= T.D 
and mt.E= T.E 
関連する問題