Rails在订购后限制查询并提高性能

时间:2014-03-03 04:21:23

标签: sql ruby-on-rails performance ruby-on-rails-4

对于模糊的标题

抱歉

我有一个查询,其中列出了具有最高rating_number的5个用户,这是用户表中的索引列。

当我根据他们的rating_number获取这些用户的列表然后调用.limit(5)方法时,它将只占用5个用户,然后在这五个用户按照rating_number的顺序排列,即使这些用户不是rating_number最高的用户。

这是当前的范围,但我知道我可以提高此查询的性能,所以如果您知道,请告诉我如何知道,因为我在一个页面上有一些这样的查询,而且它的性能非常糟糕。

在我的用户模型中

scope :top_five_users, -> do
  results = User.all
  results.order('rating_number DESC')
  results.limit(5)
end

谢谢!

1 个答案:

答案 0 :(得分:2)

您不需要使用.all

User.order('rating_number DESC') 

以上足以获得评分最高的用户

限制5位用户

scope :top_five_users, -> do
  User.order('rating_number DESC').limit(5)
end