有没有更快的方法从MySQL表通过ActiveRecord获取随机记录?

时间:2009-05-22 20:30:41

标签: sql mysql ruby-on-rails ruby

在Rails应用程序中,我使用它来从MySQL表中获取随机行:

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

即使表只有大约20,000行,也需要几秒钟。有谁知道更快的方式?


更新

还尝试在控制台中运行SQL ...

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

它仍然需要很长时间,比如两三秒钟。

2 个答案:

答案 0 :(得分:2)

我认为我的第一个答案对你没有帮助。 Perhaps this Article will

答案 1 :(得分:0)

从ruby获取一个rand,然后将其转换为主键