rails Eager loading

本文将详细解释如何在Rails应用中遇到的N+1查询问题,通过使用Eager Loading技术来优化数据加载效率。包括解决author获取问题、comments加载及带条件的eager loading等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     若存在如下Post model:


使用下面的循环加载数据时产生了N+1查询问题:

Post.all.each do |post|
  puts "Post:            " + post.title
  puts "Written by:      " + post.author.name
  puts "Last comment on: " + post.comments.first.created_on
end

首先,解决author获取问题:

Post.includes(:author).each do |post|

   然后解决comments加载:

Post.includes(:author, :comments).each do |post|

   带条件的eager loading:

Post.includes([:author, :comments]).where(['comments.approved = ?', true]).all

  多态关系的eager laoding


Address.includes(:addressable)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值