2009-05-22 10 views
0

は、私は、MySQLのテーブルからランダムに行を取得するには、これを使用しています:MySQLテーブルからActiveRecord経由でランダムなレコードを取得する方法はありますか? Railsアプリケーションで

contact = Contact.find(:all, :limit => 1, :order => 'RAND()')[0] 

テーブルのみ、それは数秒かかります約20,000行を持っているにもかかわらず。誰かがより速い方法を知っていますか?


更新

もそれはまだ二、三秒のように、長い時間がかかります...ちょうどコンソールでSQLを実行している

SELECT * FROM `contacts` ORDER BY RAND() LIMIT 1 

を試してみました。

答えて

2

私の最初の答えがあなたに役立つとは思わない。 Perhaps this Article will

+0

その記事にコメントを必ずお読みください。あなたがやろうとしていること、そしてあなたのインスタンスがあるid-spaceにどのように分散されているかによって、バグが発生するか、最適でない可能性があります。 –

0

はルビーから1ランドを取得し、その後にそれを変換し、あなたの主キー

関連する問題