Rails:会为范围搜索索引帮助吗?

时间:2015-05-23 02:24:43

标签: ruby-on-rails

在我的Rails应用程序中,我做了很多范围搜索来分组对象,比如

  scope :best_of_the_week, ->(time) do
    start_time = time.beginning_of_week
    end_time = time.end_of_week
    where("created_at > ? AND created_at < ?", start_time, end_time).where('votes_count > ?', 300).order('votes_count DESC').first(8)
  end

在这种情况下,我是否需要向created_at添加索引?那votes_count?

怎么样?

另外,我怎样才能优雅地将前两个搜索结合起来?或者将它们组合起来有什么不同?

1 个答案:

答案 0 :(得分:0)

如果您希望此查询具有最高性能,请为两者创建索引。如果你不想创建太多的索引,你应该索引created_at,日期似乎确实有更大的范围随着时间的推移(和数据库的大小)。

我喜欢使用 find_by_sql 并使SELECT检索基本数据以提高性能,如果你有太多var chars字段,这将产生很好的影响。

仅适用于辛辣糖

where("between ? and ?", start_time, end_time).(other stuff)