轨。如何更快地制作.sum方法?

时间:2014-10-15 18:45:39

标签: ruby-on-rails activerecord

我需要在Order模型中计算列:total_value的总值。我试着这样做:

Order.where("created_at > :day", {:day => 10.day.ago}).where(user_id: 3, state: 'collected').sum(:total_value)

它对我有用。但是......有没有可能更快地做到这一点? 我应该为:total_value:created_at列添加索引吗?它有意义吗?

1 个答案:

答案 0 :(得分:0)

我并不是很清楚Rails的内部优化,但我首先想到的是将where子句合并为一个而不是两个。现在它必须首先为第一个创建一个结果集,然后在该集合上应用其他位置(假设Rails尚未对其进行优化)。

为total_value创建索引没有意义,因为您没有根据该列查找任何内容。