0

Railsコントローラーに5つのランダムなオブジェクトをロードしようとしています

Thing.all(:limit => 5, :order => "RANDOM()")

それはそれを行うための最も安価な方法ですか?

4

2 に答える 2

1

短い答え:いいえ。

あなたがデータベースに依頼したことは、モノのテーブル全体をランダムな順序で並べ替えて、そのうちの 5 つを取得してください。モノのテーブルに多くの行がある場合...これは非常にコストのかかる操作です。

より良いオプション (ID が自動インクリメントであり、したがって同時発生する可能性が高い場合) は、モノのテーブルの ID 範囲内でランダムな ID のセットを生成し、それらの ID によってこれらの個々のものをフェッチすることです。

于 2013-09-25T02:30:34.120 に答える