【发布时间】:2010-12-07 00:15:35
【问题描述】:
目前我正在运行类似于此命令的内容:
Person.sum(:cholesterol, :group => :age)
当我有少量记录时,这似乎很好用。但是,当我尝试在表中使用几千条或更多记录来调用它时,实际上需要几分钟才能运行。但是,SQL 查询:
SELECT sum(`people`.cholesterol) AS sum_cholesterol, age AS age
FROM `people`
GROUP BY age
处理相同的一千条记录大约需要 0.02 秒。一旦我有了数据,我不需要做更多的事情来显示它。有没有更有效的方法来做到这一点?我知道我可以从模型和控制器手动进行 SQL 查询,我不知道这是否是一个可行的选择,因为我还没有找到一种明确的方法来处理查询后的结果。
【问题讨论】:
-
好吧,如果这不是那个需要这么多时间的 SQL 查询,那它一定是别的东西。查看您的日志以查看是否没有任何其他可能太长(或太多 sql 查询)的 sql 查询。
-
谢谢,是查询比较费时间。当我在 mysql 环境中运行命令时,它几乎是通过 rails 调用它时的 1000 倍。 Rails 真的有可能在这种方法上这么慢吗?我只对这一种方法有疑问。
标签: ruby-on-rails activerecord scalability