【Rails】BULK INSERTでバッチ処理を1/3の時間に短縮

テーブルに大量にレコードを登録するバッチ処理の時間を短縮した方法を紹介します。
BULK INSERTという方法で約1/3の時間に短縮できました。
 
 

動作確認環境


  • Mac OS X 10.9.5
  • Rails 5.0.5
  • ruby 2.3.3p222
  • activerecord-import (0.22.0)

 

BULK INSERTの導入前


csvのデータをDBに登録するバッチ処理です。
csvを1行ずつ読み込む度にcreate文を発行していました。

 
 
上記のコードだと登録する数だけINSERT文を発行してしまうので効率が悪いです。
BULK INSERTは一回のINSERT文で一括登録ができるのでオススメです。
 
リファクタリングも簡単で3分くらいでできちゃいます。
それではやってみましょう!
 

1. Gemfile


 
bundle install実行

 
 

2. コードをリファクタリング


以上で、BULK INSERTの対応は完了です。
簡単ですね。
 

お疲れ様でした!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
*
Website