【发布时间】:2013-09-15 11:13:49
【问题描述】:
这几天我一直在兜圈子,试图解决一个我过去也遇到过的问题。从本质上讲,这是一个了解在模型上执行多个查询的最佳(或有效)方法的问题,因为我经常发现我的页面加载速度非常慢。
考虑您有一个名为Everything 的模型的情况。最初,您执行一个查询,在Everything 中找到符合特定条件的那些记录
@chosenrecords = Everything.where('name LIKE ?', 'What I want').order('price ASC')
我想记住@chosenrecords的内容,因为我会将它们作为一个列表呈现给用户,但是我也想了解更多@chosenrecords的属性,例如
@minimumprice = @chosenrecords.first
@numberofrecords = @chosenrecords.count
当我在控制器中使用上述代码并检查本地服务器上的命令历史记录时,我惊讶地发现三个查询中的每一个都涉及原始Everything 模型上的 SQL 查询,而不是记住记录在@chosenrecords 中返回并对其执行查询。这对我来说似乎非常低效,实际上三个查询中的每一个都需要相同的时间来处理,从而使页面执行缓慢。
我在使用 MATLAB 等软件编写代码方面更有经验它。请您指导我是否完全走错了轨道,我发现的问题只是“它在 Rails 中的情况”,或者我是否可以做些什么来改进它。我已经研究过使用范围、定义不同的变量类型和缓存等概念,但我不太确定在每种情况下我在做什么,并且一直陷入类似的困境。
感谢您的宝贵时间
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 sqlite activerecord