《MYSQL教程MySQL隨機獲取數據庫幾條數據最快方法分析》要點:
本文介紹了MYSQL教程MySQL隨機獲取數據庫幾條數據最快方法分析,希望對您有用。如果有疑問,可以聯系我們。
- SELECT?*?FROM?table_name?AS?r1?JOIN?(SELECT?(ROUND(RAND()?*?(SELECT?ABS(MAX(id)-MIN(id)-$limit)?FROM?table_name))+(SELECT?MIN(id)?from?table_name))?AS?id)?AS?r2?WHERE?r1.id?>=?r2.id?ORDER?BY?r1.id?ASC?LIMIT?$limit;?
MYSQL教程速度非常快,但是得到的數據是id連續的,沒辦法解決.
子查詢產生一個隨機數.
rand()是0到1的隨機數,可以等于0到1.
MAX(id)-MIN(id)還要要減去$limit以免結果數量不夠$limit條
因為主表id可能不連續,所以r1.id要>=r2.id
還要注意的是有時候最小id不是從1開始的,可能從一個很大的數開始,所以必須加上M(id)的值
手冊相關內容:若要在i ≤ R ≤ j 這個范圍得到一個隨機整數R ,需要用到表達式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范圍(包括7和12)內得到一個隨機整數, 可使用以下語句:
SELECT FLOOR(7 + (RAND() * 6));