2014-03-03 86 views
0

很抱歉的模糊标题Rails的限制查询秩序,提高性能

我有一个查询在那里我得到了5个用户使用这是一个索引列在用户表中的最高rating_number名单。

当我得到这些用户根据自己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 

谢谢!

回答

2

你不需要使用.all

User.order('rating_number DESC') 

以上是足以获得最高级别的用户

,并限制5个用户

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

是啊,让这样更有意义,我应该已经知道哈。有没有其他方法可以改善这里的表现?我知道使用rating_number作为counter_cached列有助于(即时获取来自另一个模型的计数),但仍希望进一步改进。 –