MySQL: 複数の行を効率的に更新する
質問: 複数の MySQL 行を同時に更新することは可能ですか?
答え: もちろんです! INSERT ... ON DUPLICATE KEY UPDATE
ステートメントは効率的なソリューションを提供します。
例:
次のような構造のテーブルがあり、いくつかの更新を適用する必要があるとします。
Name | id | Col1 | Col2 |
---|---|---|---|
Row1 | 1 | 6 | 1 |
Row2 | 2 | 2 | 3 |
Row3 | 3 | 9 | 5 |
Row4 | 4 | 16 | 8 |
必要なアップデート:
UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
INSERT ... ON DUPLICATE KEY UPDATE
を使用した統合アップデート:
複数の個別の UPDATE
ステートメントの代わりに、単一のより効率的なクエリで同じ結果を得ることができます。
<code class="language-sql">INSERT INTO table (id, Col1, Col2) VALUES (1, 1, 1), (2, 2, 3), (3, 9, 3), (4, 10, 12) ON DUPLICATE KEY UPDATE Col1 = VALUES(Col1), Col2 = VALUES(Col2);</code>
このクエリは新しい行を挿入しようとします。 指定された id
を持つ行が既に存在する場合 (id
の主キーまたは一意のインデックスのため)、ON DUPLICATE KEY UPDATE
句が有効になり、指定された値に基づいて Col1
と Col2
の値が更新されます。 VALUES()
句内。 この方法では、複数の個別の UPDATE
ステートメントを実行する場合と比較して、パフォーマンスが大幅に向上します。
以上が複数の MySQL 行を同時に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。