複数の MySQL レコードを効率的に更新する
MySQL の複数行 INSERT 機能は広く知られていますが、複数のレコードを同時に更新する機能は見落とされがちです。この手法により、個別の UPDATE ステートメントを実行する場合に比べて効率が大幅に向上します。
次のテーブル例を考えてみましょう:
<code>Name id Col1 Col2 Row1 1 6 1 Row2 2 2 3 Row3 3 9 5 Row4 4 16 8</code>
次のような複数の個別の UPDATE ステートメントの代わりに:
<code>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;</code>
単一のより効率的なクエリで同じ結果を得ることができます。
<code>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>
これは ON DUPLICATE KEY UPDATE
句を利用します。 指定された id
を持つ行がすでに存在する場合、対応する Col1
および Col2
の値が更新されます。行が存在しない場合は、新しい行が挿入されます。 このアプローチは、複数の個別の UPDATE クエリを実行するよりも大幅に高速でリソースに優しいです。
以上が単一の MySQL クエリで複数のレコードの更新を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。