ホームページ  >  記事  >  データベース  >  MySQL で一意でないインデックスを作成した後に重複レコードを修正するにはどうすればよいですか?

MySQL で一意でないインデックスを作成した後に重複レコードを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 05:48:28245ブラウズ

How Can You Fix Duplicate Records After Creating a Non-Unique Index in MySQL?

一意のインデックスによるデータの整合性の維持

データベースでは、フィールド A、B、C、D に一意のインデックスを作成することでレコードの重複を防ぐことを目的としました。ただし、誤って通常のインデックスを作成したため、重複挿入が発生しました。 2,000 万件のレコードが危険にさらされていると、変更を加えるのは当然ためらわれます。

一意のインデックスを持つ重複レコードの処理

既存のインデックスを一意のインデックスに変更するか、新しいインデックスを追加する場合、 MySQL の動作は、重複があるかどうかによって異なります:

  • 通常の ALTER TABLE: 重複が存在する場合、操作はエラー 1062 (重複キー) で失敗します。
  • ALTER TABLE with IGNORE (MySQL 5.7.4 より前のみ): 重複を削除しますが、どの行を保持するかは指定しません。
  • MySQL 5.7.4 以降: IGNORE

段階的な解決策

MySQL 5.7.4 以降でこの問題に対処するには、次の手順に従います。

  1. データを一時テーブルにコピーします。
  2. 元のテーブルを切り詰めます。
  3. 必要な列に UNIQUE INDEX を作成します。
  4. INSERT IGNORE を使用してデータを元のテーブルに戻します。
  5. 一時テーブルを削除します。

この方法では、残りのデータを保持しながら重複を効果的に削除します。

代替ソリューションMySQL 5.7.4 より前のバージョン

MySQL バージョン 5.7.4 より前の場合、ALTER TABLE ステートメントで IGNORE 句を使用して、どの行を保持するかを指定せずに重複を削除できます。ただし、この操作を試行する前に、データのバックアップがあることを確認してください。

以上がMySQL で一意でないインデックスを作成した後に重複レコードを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。