2011-06-22 3 views
0

私は、クラス "Post"のデータに関するグラフを表示する必要があるページで多くの問題を抱えています。ここには関連するモデルがあります。レール2のパフォーマンス:include

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クラスには、「カテゴリ」というフィルタリング可能な属性が1つあります。

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

これは常にうまく機能していたが、今関与著者の数が多くを上昇していること:

は、私は、ユーザーがポストデータに望んフィルタリングし、ページ上に表示クエリを持っていますユーザーがカテゴリ別にフィルターをかけようとすると、条件 "authors.category IN(1,2)"を追加してから、通常は2、3とは対照的に、50秒以上かかることになります。

これを改善するにはどうすればよいですか?私は一日中これをしてきました。私が思いついた唯一の事柄は、カテゴリーの価値を投稿にも保存していることです。しかし、これは、多くの小切手やジョブを追加して、投稿者のすべての投稿のデータを更新することを意味しますあなたは時間があれば編集さ:(

は、事前にありがとうございます。

+0

ドゥの一部を見ることができますあなたのデータベースの 'category'カラムにインデックスがありますか? – bhamby

+0

sqlとは何ですか?レールが生成しているとの証拠? – BryanH

+0

カテゴリーは索引付けされています。私は現在、テーブル上でVACUUM ANALYZEを実行しています。なぜなら、この巨大なタイムアウトは、他の値よりもポストの数が少ない特定のカテゴリ値に対してのみ起こるからです。他のすべては約1秒で実行されますが、この特定の値は30秒​​以上かかります。 – MarceloJ

答えて

関連する問題