Sql Rails限制订单后的查询并提高性能
很抱歉标题含糊不清 我有一个查询,其中我得到了一个列表,其中有5个用户拥有最高的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
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_数字作为计数器_缓存列有帮助(我从另一个模型中获取计数),但仍希望进一步改进。