轨道2上的性能:包括

时间:2011-06-22 17:54:37

标签: ruby-on-rails performance include

我在一个页面上遇到很多麻烦,我需要在“Post”类中​​显示一些关于数据的图表。以下是涉及的模型。

class Primary
  has_many :secondary
  has_many :posts, :through => :secondary
  has_many :authors, :through => :secondary
end

class Secondary
  belongs_to :primary
  has_many :posts
  has_many :authors
end

class Post
  belongs_to :secondary
  belongs_to :author
end

class Author
  has_many :posts
  belongs_to :secondary
end

Author类有一个可以过滤的属性:“category”。

我有一个查询,用于过滤用户在帖子数据中想要的内容并将其显示在页面上:

@primary.posts.count(:include => :author, :conditions => @conditions)

这一直运行良好,但现在涉及的作者数量已经增加了很多,当用户尝试按类别过滤时,我添加条件“authors.category IN(1,2)”,然后查询开始花费超过50秒完成,而不是通常的2,3。

我可以做些什么来改善这个?我整天都在这里,我唯一想到的就是在帖子上存储类别值,但这意味着在作者添加大量的检查和工作来更新所有帖子的数据编辑:(

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试batch finding,也可以看到Rails 2 guides "4.5 Batch Processing"

如果你有时间,你也可以看到其中一些screencast on scaling rails