は、私は、MySQLのテーブルからランダムに行を取得するには、これを使用しています:MySQLテーブルからActiveRecord経由でランダムなレコードを取得する方法はありますか? Railsアプリケーションで
contact = Contact.find(:all, :limit => 1, :order => 'RAND()')[0]
テーブルのみ、それは数秒かかります約20,000行を持っているにもかかわらず。誰かがより速い方法を知っていますか?
更新
もそれはまだ二、三秒のように、長い時間がかかります...ちょうどコンソールでSQLを実行している
SELECT * FROM `contacts` ORDER BY RAND() LIMIT 1
を試してみました。
その記事にコメントを必ずお読みください。あなたがやろうとしていること、そしてあなたのインスタンスがあるid-spaceにどのように分散されているかによって、バグが発生するか、最適でない可能性があります。 –