ホームページ >データベース >mysql チュートリアル >PHP での MySQL 挿入中に重複エントリを効率的に処理するにはどうすればよいですか?
PHP で、レコードのバッチをデータベースに挿入するとき、一意のフィールドであるため、重複入力エラーを無視することが望ましいです。代わりに、新しいレコードのみが中断されることなく挿入されるようにする必要があります。
挿入前に SELECT クエリを実行して既存のエントリをチェックすることは、効率的なアプローチではありません。 MySQL の組み込み機能を使用した代替方法を次に示します。
INSERT... IGNORE:
この構文では、レコードを挿入し、重複がすでに存在する場合は無視してください。エラーはスローされません。
INSERT IGNORE INTO tbl (field1, field2, ...) VALUES (...);
REPLACE INTO:
この構文は、主キーが存在する場合、既存のレコードを新しいレコードで上書きします。一致します。主キーが一意でない場合、エラーが発生します。
REPLACE INTO tbl (field1, field2, ...) VALUES (...);
INSERT... ON DUPLICATE KEY UPDATE:
This構文は、新しいレコードを挿入するか、主キーが重複している場合は更新を実行します。
INSERT INTO tbl (field1, field2, ...) VALUES (...) ON DUPLICATE KEY UPDATE field2 = NEW.field2;
列 'id' と 'value' を持つ 'tbl' という名前のテーブルがあり、最初は 'id' のレコードが含まれているとします。 1 と '値' = 1:
REPLACE INTO:
REPLACE INTO tbl (id, value) VALUES (1, 50);
結果: 既存のレコードを 'value' = 50 で上書きします。
挿入IGNORE:
INSERT IGNORE INTO tbl (id, value) VALUES (1, 10);
結果: 'id' 1 がすでに存在するため、重複したエントリを無視します。
INSERT... ON DUPLICATE KEY更新:
INSERT INTO tbl (id, value) VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;
結果: 'id' 1 はすでに存在するため、既存のレコードを 'value' = 200 で更新します。
以上がPHP での MySQL 挿入中に重複エントリを効率的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。