Sql Rails限制订单后的查询并提高性能

Sql Rails限制订单后的查询并提高性能,sql,ruby-on-rails,performance,ruby-on-rails-4,Sql,Ruby On Rails,Performance,Ruby On Rails 4,很抱歉标题含糊不清 我有一个查询,其中我得到了一个列表,其中有5个用户拥有最高的rating\u number,这是用户表中的一个索引列 当我根据这些用户的评分编号获得这些用户的列表,然后调用.limit(5)方法时,它只需要5个用户,然后在这5个用户上按评分编号顺序排列,即使这些用户不是评分最高的用户 这是当前的范围,但是我知道我可以提高这个查询的性能,所以如果你知道的话,请告诉我怎么做,因为我在一个页面上有几个这样的查询,它的性能非常糟糕 在我的用户模型中 scope :top_five_u

很抱歉标题含糊不清

我有一个查询,其中我得到了一个列表,其中有5个用户拥有最高的
rating\u number
,这是用户表中的一个索引列

当我根据这些用户的
评分编号
获得这些用户的列表,然后调用
.limit(5)
方法时,它只需要5个用户,然后在这5个用户上按评分编号顺序排列,即使这些用户不是评分最高的用户

这是当前的范围,但是我知道我可以提高这个查询的性能,所以如果你知道的话,请告诉我怎么做,因为我在一个页面上有几个这样的查询,它的性能非常糟糕

在我的用户模型中

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

谢谢

您不需要使用
。全部

User.order('rating_number DESC') 
以上内容足以获得最高评级的用户

并限制5个用户

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

是的,这样做更有意义,我应该知道哈。有没有其他方法可以提高性能??我知道使用rating_数字作为计数器_缓存列有帮助(我从另一个模型中获取计数),但仍希望进一步改进。