在使用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