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

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

Barbara Streisand
リリース: 2024-12-29 22:36:12
オリジナル
674 人が閲覧しました

How to Quickly Remove Duplicates from a Massive MySQL Database?

MySQL: 大規模なデータベースから重複を迅速に削除

重複エントリによって損なわれた膨大な MySQL データベースに遭遇すると、特に時間がかかるシナリオでは、迅速な解決が必要になります。本質的なものです。クエリの実行時間に関する懸念により、100 万行を超えるデータベースの 1 つが重複でいっぱいになり、ストレージ容量の最大半分を占有する可能性があります。

目的は、データベースを迅速にクレンジングし、一意の行を特定することです。 「text1」と「text2」の組み合わせ。一意の組み合わせごとに、null 以外の「text3」値を持つ 1 つのレコードを保持します。このプロセスにより、データ損失が防止され、データの整合性が保証されます。

DISTINCT や GROUP BY などの従来のアプローチは、小規模なデータベースでは効果的ですが、クエリの実行時間が 20 分のしきい値を超えるなど、不十分であることが判明しています。したがって、より効率的なソリューションが模索されています。

そのようなソリューションの 1 つは、「ON DUPLICATE KEY」と「IFNULL()」を組み合わせた機能を活用し、優れたパフォーマンスを提供します。

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;
ログイン後にコピー

このアプローチは、GROUP BY や DISTINCT などのリソースを大量に消費する操作を回避することで優れています。また、大規模な一時テーブルの主な障害である、ファイルの並べ替えに関連するパフォーマンスの落とし穴も回避されます。元のテーブルのフル スキャンは依然として避けられませんが、この最適化されたソリューションは、大規模なデータベースの重複を削除するための最も効率的なアプローチを提供します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート