【发布时间】:2015-04-13 18:58:50
【问题描述】:
我正在尝试优化从此 RoR 代码呈现的查询:
records.sort_by { |r| r.badge_instances.count }.reverse.each do |s|
这会导致 N+1 个查询,因为对于每个 record,都需要有一个 COUNT 用于排序。
澄清一下,badge_instance 是record 的孩子。我可以使用哪些 Rails 方法来呈现一个查询,该查询获取所有徽章实例计数,并保持与每个 record 关联的计数以进行排序?
非常感谢您的帮助!
【问题讨论】:
-
我忘了提一下,我只是通过在我的 BadgeInstance 表中为外键添加索引来优化这一点,但我确信一旦数据变大就会再次出现问题足够的。谢谢...
标签: ruby-on-rails database postgresql optimization