一意のインデックスによる重複の削除
重複データの挿入を防ぐために、フィールド A、B、 C および D。その結果、2,000 万件のレコード テーブルに重複レコードが存在します。疑問が生じます: これらのフィールドに一意のインデックスを追加すると、既存のフィールドを損なうことなく重複が削除されますか?
インデックスの修正と重複の処理
IGNORE 修飾子を指定しない ALTER TABLE ステートメントは、一意のレコードがすでに存在するため失敗します。ただし、IGNORE 修飾子を使用すると重複が削除されます。
MySQL バージョン 5.7.4 以降の代替アプローチ
MySQL バージョン 5.7.4 以降の場合、 IGNORE 修飾子はサポートされていません。別のアプローチをお勧めします:
INSERT で重複を削除するための構文IGNORE
CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * FROM tmp_data;
DROP TABLE tmp_data;
追加の考慮事項
ドキュメントでは、IGNORE 修飾子を使用した後にどの重複行が保持されるかについては指定されていません。ソリューションを大きなテーブルに適用する前に、より小さなデータセットでこれをテストすることをお勧めします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3