的地段大部分DRY方法我有一個Rails應用程序,保持用戶的數量,評論對許多Movie_Categories。該模型是這樣的:爲Rails應用程序與小計
class User < ActiveRecord::Base
has_many :comments
end
class Movie < ActiveRecord::Base
belongs_to :movie_category
has_many :comments
end
class MovieCategory < ActiveRecord::Base
has_many :movies
end
class Comment < ActiveRecord::Base
belongs_to :movie
belongs_to :user
end
我當然可以找到用戶的評論通過MovieCategory指望做這樣的事情每個MovieCategory:
@user.comment.where("movie_category_id =?", movie_category_id)
然而,它把大量負載的服務器上,如果我需要頻繁地調用此調用,那麼我正在考慮爲所有用戶對所有Movie_Categories每小時進行一次計算(在後臺作業中),然後將計數存儲在用戶表中,每個電影類別都有自己的列。這樣,我不必爲每個用戶頻繁運行計算,只需從用戶表訪問計數。
我想知道的事情是,如果有要做到這一點,因爲我不知道,當我Movie_Categories將停止生長較爲乾燥的方式(每次用自帶的新表字段)。我也想過緩存User show視圖(這些計數出現的位置),但即便如此,如果我在User表中沒有這些列,那麼似乎每次加載新的用戶頁面(或緩存過期)將不得不通過計算所有這一切再次爲用戶評論計數。
有沒有說我面臨着不把太多的負擔在服務器上的問題,更好的辦法?
由於這些表中有很多記錄,是否會在服務器上施加很多負載?你有索引設置爲該查詢?這似乎是一個合理的查詢。 – 2013-02-19 02:05:51
現在,它不會承受太多的負載,因爲該應用程序沒有生效。我只是想着如果你有100個或更多的類別和幾十萬個用戶,看起來是什麼樣子。 – yellowreign 2013-02-19 02:28:12