ホームページ >データベース >mysql チュートリアル >大規模な MySQL データベースから重複を効率的に削除するにはどうすればよいですか?

大規模な MySQL データベースから重複を効率的に削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-02 15:04:42250ブラウズ

How Can I Efficiently Remove Duplicates from a Large MySQL Database?

大規模な MySQL データベースから重複を効率的に削除する

重複に悩まされる大規模な MySQL データベースは、大きな問題となる可能性があります。この問題に迅速に対処するには、特に数百万行を超えるデータベースの場合、クエリ実行時間の最適化が重要です。

これを達成するには、次のアプローチを活用できます。

  1. 一時テーブルの作成: 元のテーブルと同じ構造の新しいテーブル (tmp) を作成します。 (yourtable).
  2. 一意のインデックスの追加: 一意性を定義する列 (text1 と text2 など) に一意のインデックスを含めるように tmp テーブルを変更します。
  3. 一括挿入: ON DUPLICATE KEY UPDATE を使用して、テーブルからすべてのレコードを tmp に挿入します。条項。この句により、text1 と text2 の各個別の組み合わせの最初のインスタンスのみが挿入され、null 以外の値で text3 列が更新されます。
  4. Table Rename Swap: テーブルの名前を deleteme およびに変更します。 tmp をテーブルにコピーします。この手順により、元のテーブルが重複排除されたバージョンに効果的に置き換えられます。
  5. 冗長テーブルを削除します: deleteme テーブルを削除して領域を解放します。

このアプローチは次のことを行います。 GROUP BY、DISTINCT、またはサブクエリを使用する方法に比べてパフォーマンスが大幅に向上します。これにより、単一の操作ですべてのレコードを並べ替えて集計する必要がなくなり、クエリの実行時間を最小限に抑えることができます。

サンプル コード:

CREATE TABLE tmp LIKE yourtable;

ALTER TABLE tmp ADD UNIQUE (text1, text2);

INSERT INTO tmp SELECT * FROM yourtable 
ON DUPLICATE KEY UPDATE text3 = IFNULL(text3, VALUES(text3));

RENAME TABLE yourtable TO deleteme, tmp TO yourtable;

DROP TABLE deleteme;

この手法を実装すると、必要な時間を大幅に短縮できます。大規模なデータベースから重複を削除し、データの整合性とパフォーマンス効率を確保します。

以上が大規模な MySQL データベースから重複を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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