ActiveRecordを使って大量のデータをSAVEすることに。
CSVからデータを読み込んで一行ずつ分析してデータを投入したんだけど、
これが非常に遅い。
CSVの読み出しにはFasterCSVを利用しているので、
こっちの方は遅くない。
約600件のレコードを作るCSVを流し込んでみて、
データを作成しないで行をチェックするだけのメソッドでは、
レンダリングも含めて0.2秒。
データを投入する方では、なんと143秒もかかってる。
(Developmentモード)
ログを見てみると、一つのレコードに対してinsertとupdateが1回ずつ走ってる。
なんで?
やっていることは、
CSVの解析ループで1セル毎に一つオブジェクトをnewして配列に追加、
(このときSAVEはしない。CREATEでもない)
ループ終わり配列をループで回して、
関連オブジェクトのIDを入力してからSAVEをしているだけ。
SAVEは1回しかしてないのに。
最終的には1万レコードの追加が普通になりそうなので、
ちょっと気が遠くなってきた。
件数が多いのでちょっとしたチューニングでも結構大きな差になりそうなのに。
なんかいいちえないですかねえ。
PR