Иногда вы знаете, что у вас есть 1000 записей Foo, и каждая из них должна получить доступ к foo.bar
, где bar
- другая модель, тогда будет еще 1000 запросов ...
Я думал, чтоВ следующей строке для 1000 записей
@foos = Foo.find(:all, :include => :bar)
использовался для преобразования этого запроса в 1 в какой-то ранней версии Rails (путем объединения таблиц), но я не знаю, почему в книге Rails 2 Foundation говорится, что этодалее оптимизирован на 2 запроса (почему 2 запроса лучше, чем 1?):
SELECT "foos".* FROM "foos"
SELECT "bars".* FROM "bars" WHERE ("bars"."name" IN ('0001','0002', ... ))
, но я не знаю, почему в представлении, когда я распечатываю foo.bar.title
, он по-прежнему вызывает 1 запросна строку, как видно в журнале консоли, поэтому все равно выполняется 1002 запроса.Я думал, что как-то должно быть 2 запроса и все?