2013-05-28 55 views
0

例如,我有:(Rails)調用model.association.find時,範圍適用嗎?

class School < ActiveRecord::Base 
    has_many :students 
end 

one_school = School.first 

是否有使用之間的速度差:

Student.find :all, :conditions => { :first_name => "John", :school_id => one_school.id } 

one_school.students.find :all, :conditions => { :first_name => "John" } 

我在想,如果叫 「one_school.students.find」將遍歷所有學生記錄,還是隻遍歷屬於one_school的學生記錄?

這是更多關於性能的問題。我需要知道後者的查詢是否真的在rails中更快。

回答

0

這基本上是一樣的(Rails在這兩種情況下都會使用join),您可以在服務器控制檯中看到查詢及其性能,並進行比較。爲了提高表現,請確保您在學生桌上索引school_id

+0

啊,好吧,希望情況並非如此。我想我必須找到其他方法來優化這個。 :D所需的屬性已被編入索引。感謝您的輸入! :) – odina

+0

考慮使用基於文檔的數據庫,它可以減少連接,並在某些情況下提供更好的性能,例如看看mongodb(這在Rails中也很好)。 – Sagish