《MYSQL教程MySQL隨機獲取數(shù)據(jù)庫幾條數(shù)據(jù)最快方法分析》要點:
本文介紹了MYSQL教程MySQL隨機獲取數(shù)據(jù)庫幾條數(shù)據(jù)最快方法分析,希望對您有用。如果有疑問,可以聯(lián)系我們。
- 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教程速度非常快,但是得到的數(shù)據(jù)是id連續(xù)的,沒辦法解決.
子查詢產(chǎn)生一個隨機數(shù).
rand()是0到1的隨機數(shù),可以等于0到1.
MAX(id)-MIN(id)還要要減去$limit以免結(jié)果數(shù)量不夠$limit條
因為主表id可能不連續(xù),所以r1.id要>=r2.id
還要注意的是有時候最小id不是從1開始的,可能從一個很大的數(shù)開始,所以必須加上M(id)的值
手冊相關(guān)內(nèi)容:若要在i ≤ R ≤ j 這個范圍得到一個隨機整數(shù)R ,需要用到表達(dá)式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范圍(包括7和12)內(nèi)得到一個隨機整數(shù), 可使用以下語句:
SELECT FLOOR(7 + (RAND() * 6));
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5796.html