忽略查詢的低效率是否存在用於抽象跨數據庫的rand()
之間差異的現有Rails包裝器?有沒有辦法在不同的數據庫中抽象rand/random的不同形式?
的MySQL:
User.first(order: 'random()')
Postgres的:
User.first(order: 'rand()')
我可以創造我自己的不斷RAND_STR
但如果一個已經存在的不知道?
請注意 - 這不是一個效能問題
我知道查詢是低效的,我只是想知道抽象
忽略查詢的低效率是否存在用於抽象跨數據庫的rand()
之間差異的現有Rails包裝器?有沒有辦法在不同的數據庫中抽象rand/random的不同形式?
的MySQL:
User.first(order: 'random()')
Postgres的:
User.first(order: 'rand()')
我可以創造我自己的不斷RAND_STR
但如果一個已經存在的不知道?
請注意 - 這不是一個效能問題
我知道查詢是低效的,我只是想知道抽象
我敢肯定,我用不過現在似乎已經消失有這個問題。 SQLlite和Postgres都接受RANDOM()
。不確定這是否是Rails的手藝,但不管它現在是否修復的原因。
你可以這麼像User.offset(rand(User.count)).first
,但也將結束執行兩個查詢。除此之外,Rails沒有任何內置的方法來做到這一點,我知道。
感謝 - 這不是如何獲得我感興趣的隨機記錄,雖然它是否存在一個Rails變量,用於存儲底層數據庫的rand/random的正確形式 – 2012-01-17 16:29:01
不是我所知道的;軌道文件沒有顯示隨機記錄。 – 2012-01-17 16:31:18