我有一个页面需要很长时间才能呈现出来。一半的时间(3 秒)花在一个 .find 调用上,该调用有一堆急切加载的关联。我真正需要的是每种情况下关联记录的数量,以显示在表格中:我不需要实际记录本身。有没有办法只是急切地加载计数?这是一个简化的示例:
@subjects = Subject.find(:all, :include => [:questions])
在我的表格中,对于每一行(即每个主题),我只显示主题字段的值以及每个主题的相关问题的数量。我可以优化上述 find 调用以满足这些要求吗?
我考虑过使用组字段,但我的完整调用包含一些不同的关联,以及一些二阶关联,所以我认为 group by 不会起作用。
@subjects = Subject.find(:all, :include => [{:questions => :tags}, {:quizzes => :tags}], :order => "subjects.name")
:tags 在这种情况下是一个二阶关联,通过标记。这是我的联想,以防不清楚发生了什么。
Subject
has_many :questions
has_many :quizzes
Question
belongs_to :subject
has_many :taggings
has_many :tags, :through => :taggings
Quiz
belongs_to :subject
has_many :taggings
has_many :tags, :through => :taggings
感谢任何建议 - 最大