ruby-on-rails – 为什么ActiveRecord:包含两个查询?

我只是学习ActiveRecord和sql而且我的印象是:include做一个SQL查询.所以,如果我这样做:

Show.first :include => :artist

它将执行一个查询,该查询将返回第一个节目和艺术家.但是看看生成sql,我看到两个查询

[2013-01-08T09:38:00.455705 #1179] DEBUG -- :   Show Load (0.5ms)  SELECT `shows`.* FROM `shows` LIMIT 1
[2013-01-08T09:38:00.467123 #1179] DEBUG -- :   Artist Load (0.5ms)  SELECT `artists`.* FROM `artists` WHERE `artists`.`id` IN (2)

我看到了作者之一的Railscast视频:include vs:join我在控制台上看到了输出SQL,这是一个很大的SQL查询,但它只是一个查询.我只是想知道这是不是应该是这样或者我错过了什么?

解决方法

使用:includes是一种提供急切加载的解决方案.它将在您的示例中加载最多两个查询.如果您要更改查询Show.all:include => :艺术家.这也只会调用两个查询.

更好的解释:Active Record Querying Eager Loading

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...