在使用activeRecord的Rails中,为什么连接查询被认为是不好的。Rails优化问题
例如
在这里,我试图找到属于某一类公司的数量。
class Company ActiveRecord::Base
has_one :company_profile
end
找到公司数量为特定CATEGORY_ID
number_of_companies = Company.find(:all, :joins=>:company_profile, :conditions=>["(company_profiles.category_id = #{c_id}) AND is_published = true"])
这怎么可能是更好的还是仅仅是设计不良?
company_profiles = CompanyProfile.find_all_by_category_id(c_id)
companies = []
company_profiles.each{|c_profile| companies.push(c_profile.company) }
第一个请求创建单个查询,而我会为第二个案例运行几个查询不是更好。
有人能解释为什么连接被认为是Rails的不好的做法,提前
您可以添加一些参考吗?我不知道这样的意见通常是否持有--AFAIK,除非你需要它,但是当你确实需要它时(通常是出于性能原因),你应该绝对考虑它 - 这就是为什么它在那里的原因。也就是说,我认为你给出的具体例子可能用count()和适当的条件最有效地处理。 (如果你只需要一个号码,那就是) – 2010-08-20 07:33:15
我似乎在这里找到了一些帮助 http://akitaonrails.com/2008/05/25/rolling-with-rails-2-1-the-first- full-tutorial-part-2 – Sid 2010-08-20 08:31:55
似乎没有通用的规则来反对使用连接,但是当您有很多连接时,这意味着您的关联没有正确设计。 – Sid 2010-08-20 08:34:14