[英]Mysql: 'order by Rand() Limit 4 ' or not?
我需要從最新新聞數據庫中隨機抽取4個項目。
因為該表有很多行。 用RAND()進行排序或浪費資源是否明智?因為它將遍歷整個表並對它重新排序?
有更好的方法嗎? 從具有數百行的表中提取隨機特征項?
例:
$l=$database->query("SELECT car,price,thumbnail FROM cardb WHERE type='new' order by RAND() LIMIT 4");
foreach($l as $l){print_r($l);}
感謝您抽出時間來回答}
好吧...我將在兩個查詢中執行此操作。 獲取隨機行號:
SELECT
floor(count * rand()) r1,
floor(count * rand()) r2,
floor(count * rand()) r3,
floor(count * rand()) r4
FROM
(SELECT count(*) count FROM cardb WHERE type = 'new') c
並獲取行:
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r1}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r2}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r3}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r4}, 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.