【ばるくいんさーと】
バルクインサート とは?
💡 1件ずつチマチマ入れてたら日が暮れる!まとめてドーン!
📌 このページのポイント
- 大量データを一括でINSERTする高速な挿入方法
- 1件ずつINSERTする場合と比べて数十〜数百倍の速度向上が期待できる
- MySQLのLOAD DATA INFILEやPostgreSQLのCOPYコマンドが代表的
- トランザクションのオーバーヘッドやインデックス更新コストを削減できる
バルクインサートって、普通のINSERTと何が違うの?
普通のINSERTが「荷物を1個ずつ宅配」だとしたら、バルクインサートは「トラックでまとめて一括配送」みたいなものだよ。100万件のデータを入れるとき、1件ずつだと何時間もかかるけど、バルクインサートなら数分で済むこともあるんだ
なんでそんなに速くなるの?
具体的にはどうやるの?
いくつか方法があるよ。SQLで複数行をまとめて INSERT INTO t VALUES (1,'a'),(2,'b'),(3,'c') と書く方法、MySQLのLOAD DATA INFILEでCSVから直接読み込む方法、PostgreSQLのCOPYコマンドを使う方法などがあるんだ
注意することってある?
プログラムからはどう使うの?
ORMやライブラリにもバルクインサート機能があることが多いよ。たとえばPythonのSQLAlchemyやRuby on Railsのinsert_allメソッドなどだね。大量データを扱うときは必ずバルク操作を検討しよう
まとめ:ざっくりこれだけ覚えればOK!
「バルクインサート」って出てきたら「大量データを一気にまとめて入れる高速テクニック」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bulk Insert」 = 一括挿入
💬 bulk(大量の、かさばる)をまとめてinsert(挿入)するという意味だよ