2014-03-03 42 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列有助於(即時獲取來自另一個模型的計數),但仍希望進一步改進。 –