MySQL の効率的な Upsert: INSERT ... ON DUPLICATE KEY UPDATE
MySQL は、キーの存在に基づいて新しい行を挿入するか、既存の行を更新する必要があるシナリオに頻繁に直面します。 upsert (またはmerge) として知られるこの結合操作は、MySQL では単一のステートメントを使用してエレガントに処理されます。
INSERT ... ON DUPLICATE KEY UPDATE を利用する
複数のクエリの代わりに、MySQL の INSERT ... ON DUPLICATE KEY UPDATE
ステートメントはこのプロセスを効率化します。その構文は単純です:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (`value1`, `value2`, ...) ON DUPLICATE KEY UPDATE `column1` = `value1`, `column2` = `value2`, ...</code>
実際の応用: 使用回数の増加
列 usage
、thing_id
、および times_used
を持つ first_time_used
テーブルを想像してください。 目標は、行が存在する場合、指定された times_used
の thing_id
を増やすことです。それ以外の場合は、新しい行を挿入します。
このタスクは、INSERT ... ON DUPLICATE KEY UPDATE
:
<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>
このクエリは両方のシナリオをインテリジェントに処理します。thing_id
4815162342 が存在する場合、times_used
はインクリメントされます。それ以外の場合は、指定された値を含む新しい行が追加されます。 これは、MySQL の更新/挿入機能の効率性と簡潔性を示しています。
以上がMySQL の INSERT ... ON DUPLICATE KEY UPDATE はどのようにして挿入と更新を効率的に処理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。