【问题标题】:How to use Eager loading(includes) with find_in_batches rails如何在 find_in_batches rails 中使用 Eager loading(includes)
【发布时间】:2021-03-01 08:23:38
【问题描述】:

我在 users 表中有大量行,我需要对其应用预先加载来加载用户的 cmets。

User.includes(:comments)

由于用户集太大,在添加急切加载时会消耗大量内存。

所以在经历了几个解决方案之后,我以下面的方式结束了

User.select(:id).find_in_batches do |user|
  users = User.where(id: user_id).includes(:comments)
end

有没有更好的方法来使用 find_in_batches 执行预加载?

【问题讨论】:

    标签: ruby-on-rails activerecord eager-loading


    【解决方案1】:

    你可以像这样使用find_in_batches

    User.where(id: user_ids).includes(:comments).find_in_batches do |users|
      users.each do |user|
        user.comment
      end
    end
    

    每批自动eager_loadingcomments

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      相关资源
      最近更新 更多