Rails: включить против: соединения

Это скорее "почему все работает именно так" вопрос, а не «я не знаю, как это сделать»; вопрос...

Таким образом, Евангелие при извлечении связанных записей, которые, как вы знаете, собираетесь использовать, заключается в использовании:include потому что вы получите соединение и избежите множества дополнительных запросов:

Post.all(:include => :comments)

Однако, когда вы просматриваете журналы, никакого объединения не происходит:

Post Load (3.7ms)   SELECT * FROM "posts"
Comment Load (0.2ms)   SELECT "comments.*" FROM "comments" 
                       WHERE ("comments".post_id IN (1,2,3,4)) 
                       ORDER BY created_at asc) 

Этоis использование ярлыка, потому что он извлекает все комментарии одновременно, но все еще не является соединением (что, по-видимому, говорит вся документация). Единственный способ получить соединение - это использовать:joins вместо:include:

Post.all(:joins => :comments)

И логи показывают:

Post Load (6.0ms)  SELECT "posts".* FROM "posts" 
                   INNER JOIN "comments" ON "posts".id = "comments".post_id

Я что-то пропустил? У меня есть приложение с полдюжиной ассоциаций, и на одном экране я отображаю данные по всем из них. Похоже, было бы лучше иметь один объединенный запрос вместо 6 отдельных. Я знаю, что с точки зрения производительности не всегда лучше выполнять объединение, а не отдельные запросы (фактически, если вы расходуете затраченное время, похоже, что два вышеупомянутых отдельных запроса выполняются быстрее, чем объединение), но в конце концов документы, которые я читал, я удивлен, увидев:include не работает, как рекламируется.

Возможно рельсыis осведомлен о проблеме производительности и не присоединяется, кроме как в определенных случаях?