嘗試使用Rails 2.3和MySQL以最有效的方式獲取某些報表的數據。Rails - 跨幾個關係有效地提取和計算數據
我們的應用有用戶,交易和購買交易。關係是這樣的:
class User
has_many :purchased_deals
has_many :deals, :through => :purchased_deals
end
class Deal
has_many :purchased_deals
has_many :users, :through => :purchased_deals
end
class PurchasedDeal
belongs_to :deal
belongs_to :user
end
對於我跑的報告,我需要的是已購買產品的所有用戶(即至少有一個PurchasedDeal),然後總和所有的交易,他們已購買(價格附於交易,而不是購買交易)。
當然,我可以從所有用戶的列表開始,包括交易和購買交易。我試過了,查詢量很大(30,000個用戶,有或沒有,3000個交易,100,000個以上的購買交易)。
我可以先從用戶開始,然後做一個.each並找到已購買交易的人,將他們分成他們自己的組,然後遍歷那些以獲得總購買金額,但這是相當多的查詢。
目前,這兩種方法都需要很長時間才能使請求超時。獲得我需要的數據最有效的方法是什麼?向列添加列是一個完全可以接受的解決方案,順便說一句。我有完整的數據庫訪問來做我需要的。
謝謝!
當我嘗試運行您的第一條語句,它踢回MySQL錯誤關於「count_all」是一個未知的列。 – 2010-11-24 17:41:51