大量のDBデータをより速く登録・更新するSQLの書き方について


DBにデータを登録する際に使うINSERT文やUPDATE文は1つのSQLで複数のデータを登録する書き方がありますが、対象のデータ量が多い場合はSQLをどう作ると処理が速いのでしょうか？

私は1つのSQLで複数のデータをまとめて登録した方が速いのかなと思ったのですが友達は1つ1つSQL作る派らしくて、どっちが良いんだろうなぁと気になったので質問させていただきました。




（特にデータベースのコンテキストにおいては）「大量」という語は個人差が激しく、1MB、1GB、1TB等、具体的な量を明示しないことには意味がありません。

真に大量のデータを扱うのであれば、データベースエンジンが用意している専用の読み込み命令を使う必要があり、そのためには呼び出し側も事前にデータ加工することになるでしょう。例えばMySQLでは[`LOAD
DATA INFILE`構文](https://dev.mysql.com/doc/refman/5.6/ja/load-
data.html)があるようです。

* * *

> 私は1つのSQLで複数のデータをまとめて登録した方が速いのかなと思ったのですが友達は1つ1つSQL作る派

そこまでせず、簡易な高速化という意味であれば、当然一度にまとめた方が効率が良くなります。トランザクション数も減らせますし、メモリやディスクといったリソースの確保回数も削減されるためです。

