尝试使用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