ホームページ > データベース > mysql チュートリアル > MySQL の INSERT ... ON DUPLICATE KEY UPDATE はどのようにして挿入と更新を効率的に処理できるのでしょうか?

MySQL の INSERT ... ON DUPLICATE KEY UPDATE はどのようにして挿入と更新を効率的に処理できるのでしょうか?

Barbara Streisand
リリース: 2025-01-21 11:57:09
オリジナル
958 人が閲覧しました

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Efficiently Handle Inserts and Updates?

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>
ログイン後にコピー

実際の応用: 使用回数の増加

usagething_id、および times_used を持つ first_time_used テーブルを想像してください。 目標は、行が存在する場合、指定された times_usedthing_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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート