aar*_*ell 13 database optimization database-design ruby-on-rails query-optimization
如果您的Rail应用程序具有许多复杂的关联模型,您使用哪些技术来减少数据库查询?
事实上,我会进一步扩展这个问题,然后问一下,对于任何页面,你认为"太多"的查询是什么?
我有一个页面,我希望每页加载大约20次点击数据库.这是关注但不知道它是否应该关注我,或者我能做些什么来减轻负荷?
Jon*_*han 14
退房: 子弹
它是识别n + 1个查询的好方法,它提供了最小化查询的建议.
它确实会降低开发模式的速度,因此请确保在不进行性能调整时将其禁用.
虽然我们在这里,但也结帐:rails_indexes
一种简单的方法来确定您的应用可能缺少哪些索引.
快乐的调整.
Dav*_*ims 11
一种常见的做法是明智地使用include =>:association选项.
例如,您可以在控制器上执行以下操作:
def show
    @items = Item.find(:all) 
end
...并且展示视图会执行以下操作:
<% @items.each |item| %>
    <%= item.product.title %>
<% end %>
这将为每次产品调用创建一个查询.但是,如果您声明包含如下关联,则会在一个查询中获得急切加载的关联:
def show
    @items = Item.find(:all, :include => :product)
end
与往常一样,检查控制台的查询时间等.