优化用于优化非空文本字段的查询

时间:2017-07-25 13:09:49

标签: ruby-on-rails ruby mongodb ruby-on-rails-4 mongoid

我正在使用Mongoid处理一个非常大的,长时间运行的Rails monolith。我被要求找到并优化慢速运行的查询,我已经在Heroku的mLab插件的帮助下开始了。

此查询(某些列名称已编辑)出现为最慢的运行函数:

{
  "status":"<val>",
  "from":{"$regex":"<val>","$options":"<val>"},
  "text":{"$regex":"<val>","$options":"<val>"},
  "field_x":{"$gte":"<val>"},
  "field_y":{"$gte":"<val>"},
  "field_z":{"$gte":"<val>"}
}

mLab提供了一些改进慢速查询的建议,并且我已经添加了它建议的索引,但我想知道我是否可以更好地使Rails查询。它看起来像这样(型号名称已更改):

@reviews = object.reviews.active.and(:text.ne => nil, :text.ne => '').desc(:created_at)
@reviews += object.reviews.active.any_of({text: nil}, {text: ''}).desc(:created_at)

我没有编写此代码,但据我了解,它希望使用文本对评论进行优先排序,以便在没有文字的5星评价上方列出带有文字OMG, LIKE TOTALLY AMAZE-BALLZ的5星评价。写这个更好,更有效吗?

0 个答案:

没有答案