我使用以下代碼從表中返回一個隨機行。使用字段'rand'。使用隨機索引和RAND提取隨機行()
INSERT INTO imgs SET rand = RAND()
出於某種原因,結果雖然改變每次運行都具有非常低的「蘭特」只排場:
SELECT *
FROM imgs
WHERE rand > RAND()
ORDER BY rand ASC
LIMIT 1
字段「蘭特」是由MySQL在創建使用類似的東西產生。絕對有超過7000行的完整範圍。如果我用'WHERE rand> [0-1之間的數字''替換'WHERE rand> RAND()',接縫工作正常'
除了處理100K +行時不能很好地擴展,爲什麼不只是使用'ORDER BY RAND()'? – 2010-09-15 19:46:22
我正試圖爲需要定期將我的共享服務器推向極限的客戶開發一個非常優化的系統。 顯而易見的解決方案是在php中生成隨機float,但在SQL語句中,接口更符合邏輯。 – 2010-09-15 21:30:03