2

在 Rails 2.3.5 应用程序中,我有以下模型:

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" 

当我使用查找全部?

4

1 回答 1

4

这实际上是一种优化,实际上如果 id 的数量变高,Rails 会更改查询策略。

您也可以使用:join而不是使用:include

于 2009-12-25T10:58:42.090 回答