ホームページ >データベース >mysql チュートリアル >データベースにデータを挿入するときに重複エントリを効率的に防ぐにはどうすればよいですか?
データベース エントリの重複を防ぐための最適なアプローチの決定
データベースにデータを挿入するには、多くの場合、エントリの重複を防ぐための対策が必要です。テーブルに id (主キー)、pageId (外部キー)、および名前の 3 つの列が含まれるシナリオを考えてみましょう。 PHP スクリプトはテーブルに 5000 レコードを挿入しようとしますが、約半分は重複しており、同一の pageId と名前の値を共有しています。この記事の目的は、スクリプトの実行中にそのような重複が保存されないようにする効果的な方法を探ることです。
最初に推奨される手順は、次のコマンドを使用してテーブル上に一意のキーを確立することです:
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
このアクションにより、pageId と名前の各組み合わせがテーブル内で一意であることが保証されます。ただし、重複データが見つかった場合に何が起こるかは指定されていません。
重複エントリに対処するには、いくつかのオプションがあります:
重複を無視:
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
このメソッドは重複した挿入を単に無視し、それらをtable.
既存のレコードを上書きする:
INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "first") ON DUPLICATE KEY UPDATE (somefield = 'first') INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "second") ON DUPLICATE KEY UPDATE (somefield = 'second')
このアプローチでは、最初の重複が元のレコードを上書きし、後続の重複が元のレコードを上書きします。最近のone.
カウンターを更新します:
INSERT INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo") ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
このメソッドは、重複エントリごとにカウンター フィールドを増分します。これは、特定のレコードが複製された回数を追跡するのに役立ちます。
これらのオプションと望ましい動作を慎重に検討することで、開発者はデータベース エントリの重複を効果的に防止し、データの完全性と一貫性。
以上がデータベースにデータを挿入するときに重複エントリを効率的に防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。