一意のインデックスによる重複の削除
重複データの挿入を防ぐために、フィールド A、B、 C および D。その結果、2,000 万件のレコード テーブルに重複レコードが存在します。疑問が生じます: これらのフィールドに一意のインデックスを追加すると、既存のフィールドを損なうことなく重複が削除されますか?
インデックスの修正と重複の処理
IGNORE 修飾子を指定しない ALTER TABLE ステートメントは、一意のレコードがすでに存在するため失敗します。ただし、IGNORE 修飾子を使用すると重複が削除されます。
MySQL バージョン 5.7.4 以降の代替アプローチ
MySQL バージョン 5.7.4 以降の場合、 IGNORE 修飾子はサポートされていません。別のアプローチをお勧めします。
INSERT IGNORE で重複を削除する構文
<code class="sql">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;</code>
追加の考慮事項
ドキュメントでは、IGNORE 修飾子を使用した後にどの重複行が保持されるかについては指定されていません。ソリューションを大きなテーブルに適用する前に、より小さなデータセットでこれをテストすることをお勧めします。
以上が一意のインデックスは、既存の重複のあるテーブルから重複を削除できますか?またその方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。