@users = User.order( "RANDOMを()")リミット(6)
6人のランダムなユーザーのリストを生成しますが、この方法ではページの読み込み時間が1200ミリ秒になります。 6人のランダムなユーザーを呼び出すためのより高速で効率的な方法がありますか?それが遅くなることとしてはMySQLランダム使って配列のシャッフルを使用しての代わりに、試みることができる
@users = User.order( "RANDOMを()")リミット(6)
6人のランダムなユーザーのリストを生成しますが、この方法ではページの読み込み時間が1200ミリ秒になります。 6人のランダムなユーザーを呼び出すためのより高速で効率的な方法がありますか?それが遅くなることとしてはMySQLランダム使って配列のシャッフルを使用しての代わりに、試みることができる
のページに1つのクエリ発生しますKaminari
User.order('created_at').page(rand(User.count)).per(6)
を使用して、このページネーション呼び出しを考えてみましょう: Rails select random record
@ramcを - ご意見ありがとうございます。読み込み時間がずっと速くなりました:)
あり、 0から始まり、そのユーザーオブジェクトが削除されることはありません、以下は非常に高速である必要があります:
@users = (0..5).map { User.find(rand * User.count) }
また、User.countの結果をキャッシュする方が速いでしょう。簡潔で分かりやすくするために除外されています。 – Redbeard
Hあなたはランダムなオフセットを使用しようとしました&制限?
class User < ActiveRecord::Base
def self.random num = 1
num.times.map { offset(rand(count)).limit(1) }
end
end
@users = User.random(6)
ARから単一のランダムインスタンスを取得するのに似たようなものを使用しました。独自の結果を保証したい場合は、少しスマートにする必要があります。
代わりにユーザーのページをランダムに取得できます。これは、1つのカウントクエリと私はここで説明する方法使用して終了6人のユーザー
http://stackoverflow.com/questions/2279706/select-random-row-from-an-sqlite-table/4740561#4740561のようなものはありますか? – captainpete
あなたはこれを考慮しました:http://stackoverflow.com/questions/3641057/rails-select-random-record/3641112#3641112 – dexter