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

有没有更快的方法通过ActiveRecord从MySQL表中获取随机记录?,sql,mysql,ruby-on-rails,ruby,Sql,Mysql,Ruby On Rails,Ruby,在Rails应用程序中,我使用它从MySQL表中获取一个随机行: contact = Contact.find(:all, :limit => 1, :order => 'RAND()')[0] 即使这个表只有大约20000行,也需要几秒钟的时间。有人知道更快的方法吗 更新 还尝试在控制台中运行SQL SELECT * FROM `contacts` ORDER BY RAND() LIMIT 1 它仍然需要很长的时间,比如两三秒钟。从ruby中获取一个rand,然后将其转换为

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

contact = Contact.find(:all, :limit => 1, :order => 'RAND()')[0]
即使这个表只有大约20000行,也需要几秒钟的时间。有人知道更快的方法吗


更新

还尝试在控制台中运行SQL

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

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

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