右鍵更好的性能,現在我有了許多命中,如果我叫表叫廣告活動說:社團
Campaign.find(30).hits
這需要4秒,或4213毫秒。
如果我把這個代替:
campaign = Campaign.find(30) campaign.hits.count
是否仍然加載所有的點擊量,再算上?還是它看到我在計數,並避免加載所有的點擊? (目前有300,000多行)。
我想弄明白一個聰明的方式加載/計數我的命中。我想添加一個方法我Campaign.rb模型,如:
def self.total_hits find :first, :select => 'COUNT(id) as hits', :conditions => ["campaign_id = ?", self.id] end
我知道,查詢將不會從hits
表加載,但也只是從自制查詢計數它的一個例子,和Ruby on Rails一起爲我做這件事。
這個memcache查詢會更有效嗎? (我有它運行,但似乎沒有任何可以更好/快/慢,一樣的速度。)
def self.hits Rails.cache.fetch("Campaign_Hits_#{self.campaign_id}", :expires_in => 40) { find(:first, :select => 'COUNT(id) as hits', :conditions => ["campaign_id = ?", self.campaign_id]).hits } end
任何建議將是巨大的!
未定義的錯誤,它不應該知道無論如何找到30 ID。 – Garrett 2009-02-04 03:32:00