`

Fix N+1 Queries

阅读更多
http://rails-bestpractices.com/posts/29-fix-n-1-queries


N+1 Queries is a serious database performance problem. Be careful of that situation! If you're not sure, I recommend you install http://github.com/flyerhzm/bullet
 plugin, which helps you reduce the number of queries with alerts (and growl).
Sample Model code

# model
class User < ActieRecord::Base
    has_one :car
end
-
class Car < ActiveRecord::Base
    belongs_to :user
end

Bad Smell

# your controller
def index
  @users = User.paginate( :page => params[:page], :per_page => 20 )
end

# view
<% @users.each do |user| %>
   <%= user.car.name %>
<% end %>

When @users.each in view, it cause N+1 queries. (N is 20 in this case)
Refactor

# your controller
def index
  @users = User.paginate( :include => :car, :page => params[:page], :per_page => 20 )
end

Add :include into query, so the number of queries reduces to only 2.

总结: 某种时候include  是必须的
分享到:
评论

相关推荐

    IDEFixPack+fastdcc(2009-XE10.3).7z

    《IDEFixPack与FastDCC在Delphi开发中的应用与详解》 在Delphi的开发过程中,有时我们会遇到一些运行时错误,这些问题可能源于编译器的兼容性问题或者组件库的不匹配。"IDEFixPack+fastdcc(2009-XE10.3).7z"这个...

    vivado fix(1+x+N)_N格式.pdf

    表3-8展示了1QN格式数据的例子,如1Q7(或Fix9_7)格式,其中包含了+1、-1和+π/4及-π/4的表示。表3-9则提供了2QN格式相位的例子,如2Q6(或Fix9_6)格式,展示了+1、-1、+π和-π的表示。 在CORDIC(CORDIC,坐标...

    DevExpressVCL+17.2.4+V1+XE-RAD10.2.2+FullSource+Fix+By+Flying+Wang+自动编译安装+带汉化包+V2018-02-14.zip

    标题 "DevExpressVCL+17.2.4+V1+XE-RAD10.2.2+FullSource+Fix+By+Flying+Wang+自动编译安装+带汉化包+V2018-02-14.zip" 暗示了这是一个包含DevExpress VCL组件的压缩包,版本为17.2.4,由Flying Wang修复并提供了...

    【Microsoft+Fix+it卸载+Office2007专用工具】.rar

    标题中的“【Microsoft+Fix+it卸载+Office2007专用工具】.rar”表明这是一款由微软(Microsoft)提供的专门用于卸载Office 2007的自动化工具。"Microsoft Fix it"是微软推出的一个自动化故障排除和修复服务,它能够...

    FastReports+5.6.1+Fix+By+Flying+Wang+FS

    《FastReport 5.6.1:专业报表解决方案详解》 FastReport 5.6.1是一款备受赞誉的报表设计工具,专为Delphi开发者设计,涵盖了从D7到XE10.2等多个版本的Delphi环境。这款强大的报表引擎以其易用性、灵活性和高效性,...

    quickfix:QuickFIX C ++修复引擎库

    快速解决 建筑和安装 Full instructions: ...Quick instructions: ./bootstrap ./configure make make check sudo make install 对于SunOS和AIX,请查看README.SunOS和README.AIX。... 可以使用相对较新版本的cmake...

    mybatis的分页插件pagehelper-fix+文档

    1. 引入依赖:首先需要在项目中引入PageHelper的JAR包,例如`pagehelper-3.4.2-fix.jar`。如果是Maven项目,可以在pom.xml文件中添加对应的依赖项。 2. 配置PageHelper:在项目的配置文件(如mybatis-config.xml)...

    Microsoft Fix it

    Microsoft Fix it,系统修复工具。

    FastReports+5.2.12+Fix FS

    在标题和描述中提到的"FastReports+5.2.12+Fix FS"和"FastReports+5.2.12 FS"指的是FastReports的5.2.12版本,其中可能包含了修复程序或者更新,FS可能是“Final Solution”或者“Fixed Version”的缩写,意味着这是...

    HP电子书制作软件 v3.2 Final + Fix3 补丁

    1. **多格式支持**:软件可能支持多种文档格式的导入,方便用户整合不同来源的内容。 2. **可视化编辑**:提供直观的界面,让用户可以通过拖放操作来排列和调整页面内容。 3. **模板库**:内置各种预设的页面模板,...

    Helmholtz方程的有限元解法.

    s(k,3)=(q+1)*(n+1)+r-n+1; s(k,4)=(q+1)*(n+1)+r-n; s(k,5)=(r-n-1)*h; s(k,6)=q*h; s(k,7)=(r-n)*h; s(k,8)=(q+1)*h; s(k,9)=(r-n-1)*h; s(k,10)=(q+1)*h; end end ``` 四、有限元方法的应用 在本文中...

    Notepad++ 6.5.5

    Fix the word-completion hanging problem by typing Chinese in ANSI document under Chinese Windows 7/8 64 bits. Enable word-completion in ANSI document under CJK environment. Add wildcard capacity ...

    GAPSO-share.rar_FIX_GA+PSO_GA-PSO算法_ga pso algorithm_pso 组合优化

    我从网上下载了一个GA-PSO算法,试着利用GA和PSO组合...我下载原始算法,有一个问题就是它是针对所有的设计变量上下限都是一样的,所以我对程序进行了修改与改进,现在可以处理上下限不一致的问题,同时fix了一些bug。

    canfd-flash-tool-release-bugfix + canflashtool

    canflashtool

    CTP FIX网关说明1

    字段tag35-MsgType用于区分FIX消息的类型,但对于FIX网关,同一消息类型可能包含多种目的,为将其良好区分开,针对tag35-MsgType相同,目

    Notepad++ v5.8.4

    Fix memory leak problem while switching tab. Fix User Defined Language dialog docking problem under Windows 7. Fix backwards search with Asian codepage problem. Add a new capacity in context menu: the...

    微软GDI+图片漏洞360专用补丁包360gdi_fix.exe

    微软GDI+图片漏洞360专用补丁包360gdi_fix.exe 微软GDI+图片漏洞360专用补丁包360gdi_fix.exe

    FixUpdate与Update的区别1

    FixUpdate与Update的区别 在 Unity 开发中, FixUpdate 和 Update 是两个常用的函数,但它们之间存在着重要的区别。今天,我们将深入探讨 FixUpdate 和 Update 的不同之处,并了解何时使用它们。 首先,让我们从 ...

    lint-fix-nodemon:在没有两次重新启动的情况下运行ESLint + fix + nodemon

    lint-fix-nodemon 观看文件并在保存时运行ESLint + fix + nodemon 为什么需要这个? eslint修复文件时避免两次重新启动(nodemon通常会先检测到初始更改,然后再检测到修复更改) 如果挂起或启动服务器失败,请...

    Leatrix_Latency_Fix_3.03_macroman.enc_FIX_Leatrix_Latency_Fix_la

    1. **python27.dll**:这是Python 2.7版本的运行时库文件,为程序提供Python解释器功能。 2. **tk85.dll** 和 **tcl85.dll**:这两个文件属于Tcl/Tk库,用于图形用户界面(GUI)的创建,可能被用来构建Leatrix ...

Global site tag (gtag.js) - Google Analytics