Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Railsコントローラーに5つのランダムなオブジェクトをロードしようとしています
Thing.all(:limit => 5, :order => "RANDOM()")
それはそれを行うための最も安価な方法ですか?
短い答え:いいえ。
あなたがデータベースに依頼したことは、モノのテーブル全体をランダムな順序で並べ替えて、そのうちの 5 つを取得してください。モノのテーブルに多くの行がある場合...これは非常にコストのかかる操作です。
より良いオプション (ID が自動インクリメントであり、したがって同時発生する可能性が高い場合) は、モノのテーブルの ID 範囲内でランダムな ID のセットを生成し、それらの ID によってこれらの個々のものをフェッチすることです。