我一直在閱讀很多關於使用「rand by order」的缺點,所以我不需要更新。 我在想,因爲我只需要從數據庫中檢索到的行數量有限被隨機,也許我應該做的:PHP,MySQL - 結果數組shuffle會比「select ... order by rand()」更快嗎?
$r = $db->query("select * from table limit 500");
for($i;$i<500;$i++)
$arr[$i]=mysqli_fetch_assoc($r);
shuffle($arr);
(我知道這只是隨機化500個第一行,是吧)。
會是這樣快於
$r = $db->("select * from table order by rand() limit 500");
讓我提,說數據庫表上擠滿了超過... 10,000行。
你爲什麼不自己動手?!? - 好吧,我有,但我正在尋找你的經驗意見。
謝謝!
你想隨機排列前500行的順序,還是返回500個隨機行?這是一個重要的區別,您的兩個解決方案會產生不同的結果! – Artelius
我明白你在說什麼,但無論哪種方式對我都很好。我只是尋找最快的方法。 – Gal
最快的方法是檢索500行*然後*洗牌它們。我相信可以在SQL中執行此操作(這很可能比PHP解決方案更快),但它需要與您建議的查詢不同的查詢。 – Artelius