2009-05-22 26 views
0

Rails應用程序中,我使用這個從MySQL表得到一個隨機行:是否有更快的方式通過ActiveRecord從MySQL表中獲取隨機記錄?

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空間中分佈,可能會出現錯誤或非最佳行爲。 – 2009-05-22 21:10:23

0

紅寶石獲得一個蘭特,然後將其轉化爲你的主鍵

相關問題