私は、クラス "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秒以上かかることになります。
これを改善するにはどうすればよいですか?私は一日中これをしてきました。私が思いついた唯一の事柄は、カテゴリーの価値を投稿にも保存していることです。しかし、これは、多くの小切手やジョブを追加して、投稿者のすべての投稿のデータを更新することを意味しますあなたは時間があれば編集さ:(
は、事前にありがとうございます。
ドゥの一部を見ることができますあなたのデータベースの 'category'カラムにインデックスがありますか? – bhamby
sqlとは何ですか?レールが生成しているとの証拠? – BryanH
カテゴリーは索引付けされています。私は現在、テーブル上でVACUUM ANALYZEを実行しています。なぜなら、この巨大なタイムアウトは、他の値よりもポストの数が少ない特定のカテゴリ値に対してのみ起こるからです。他のすべては約1秒で実行されますが、この特定の値は30秒以上かかります。 – MarceloJ