要旨
find_each を使おう。 batch_size を指定すれば、一度に取得するレコード数を制限できる。
Model.find_each(batch_size: 100) do |model| ~~~ end
詳細
#all は、一度に全てのレコードを取得するので、まずデータベースに負荷がかかってしまう。さらにその結果を全てメモリ上に展開するので、Railsにも負荷がかかってしまう。
find_each を使えば、一度に取得してくるバッチサイズを指定することで、大量のレコードを取得してしまうことを防げる。