Mysql テーブルからすべての重複行を削除したい。
しかし問題は、どの行が重複しているかわからなかったことです。
この Mysql テーブルには、約 500000 行の大きなデータ ラウンドが含まれています。
一部の行が重複しています。
これを行う方法を教えてください。
アップデート:
phpMyAdmin で実行する SQL クエリが必要です。
これが理解するための大まかな表です。
テーブル名がfooであるとします。
+---------------------------------------------------------------------+
| id | link | title | description |
+---------------------------------------------------------------------+
| 1 | google | search engine | search here free |
| 2 | yahoo | also search engine | findout web easily |
| 3 | Facebook| connect with world | meet with world |
| 4 | google | search engine | search here free |
| 5 | msn | Microsoft network | network by MS |
| 6 | google | search engine | search here free |
| 7 | msn | Microsoft network | network by MS |
| 8 | yahoo | also search engine | findout web easily |
| 9 | myweb | my website | ideal website |
|... | .... | .....continue.... | ..... ... ..... |
+---------------------------------------------------------------------+
これは大まかなテーブルで、約 500000 行あるため、テーブルを完全に定義することはできませ
ん。
私はそのような大まかなクエリです。
DELECT all duplicate rows FROM foo
編集
この質問は重複としてマークされています。しかし、私はそれが一意だと思います。これとのリンクは重複しています。ユニークなインデックス。これがそのコードです
ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company );
この後、データを追加するたびにこのクエリを実行すると、Mysql はそれが既に存在するかどうかを確認し、存在する場合は追加を停止します。
このクエリを使用すると、テーブルに大きなデータが含まれていることを既に説明しました。その後、テーブルに1つの結果を追加すると、テーブル全体がチェックされ、約500000行が一意になるため、遅くなります.1つだけですこれが10の場合は新しいレコード、または100000の新しいレコードを入力したい場合は、遅くなりすぎます。
そして、私はそれらのほとんどがクラスを含んでいる他の答えを見ますHAVING
.それはすでに遅いです.