2
在Rails 2.3.5應用我有類似以下型號:優化Rails的預先加載查詢找到所有
class Foo < ActiveRecord::Base
has_many :bars
end
class Bar < ActiveRecord::Base
belongs_to :foo
end
當我打電話
Foo.all(:include => :bars)
我見在控制檯中進行以下查詢:
SELECT * FROM "foos"
SELECT "bars".* FROM "bars" WHERE ("bars".foo_id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21))
與where子句中的所有foo的id。
我想這不是一個最佳查詢,而ID的數量可能很大,我需要預加載所有'酒吧'。另外,實際上我沒有兩個模型,但它們是一個鏈。
有沒有一種方法,使預先加載查詢像
SELECT "bars".* FROM "bars"
當我使用找到所有?
看看這裏還有http://akitaonrails.com/2008/5/26/rolling-with-rails-2-1-the-first-關於'Optimized Eager Loading'部分的完整教程 - 第2部分 – khelll 2009-12-25 11:08:02
謝謝,knoopx! 它在我看來,急切的加載一定不知道我是否實際上加載了所有的錶行,或者所有foo的匹配條件(因此,WHERE子句將不包括所有foo的id) 我是現在試圖找出Rails如何改變查詢策略,如果id的數量只是好奇心高的話。 khelll,感謝您的鏈接! – khustochka 2009-12-25 11:26:49