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 サイトの他の関連記事を参照してください。