MySQL の効率的な Upsert 操作: INSERT ... ON DUPLICATE KEY UPDATE を使用します
MySQL データベース管理では、データが存在するかどうかに基づいて新しい行を挿入したり、既存の行を更新したりする必要があることがよくあります。これは「アップサート」操作 (挿入または更新) と呼ばれます。
MySQL は、Upsert 関数を効率的に実装するための INSERT ... ON DUPLICATE KEY UPDATE
構文を提供します。仕組みは次のとおりです:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE `column1` = value1_updated, `column2` = value2_updated, ...</code>
INSERT
句は、テーブルに挿入される値を指定します。 ON DUPLICATE KEY UPDATE
句は、同じ主キー (または一意のインデックス) を持つ行がテーブル内にすでに存在する場合に何を行うかを定義します。
たとえば、次の表を考えてみましょう:
<code class="language-sql">CREATE TABLE `usage` ( `thing_id` INT NOT NULL PRIMARY KEY, `times_used` INT DEFAULT 0, `first_time_used` TIMESTAMP );</code>
4815162342 の行 thing_id
に新しいデータを挿入し、times_used
列を 1 増やして、first_time_used
を現在のタイムスタンプに設定する場合は、次の Upsert クエリを使用できます。
<code class="language-sql">INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1</code>
4815162342 の thing_id
を含む行がすでに存在する場合、クエリは times_used
を変更せずに first_time_used
列を更新します。それ以外の場合は、新しい行が挿入されます。
INSERT ... ON DUPLICATE KEY UPDATE
は、MySQL で Upsert 操作を実行するための柔軟で効率的なテクノロジーです。これにより、単一のクエリを使用して挿入および更新操作を実行できるため、コードが簡素化され、パフォーマンスが向上します。
以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE はアップサート操作をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。