mysql隨機抽取一定數(shù)量的記錄實例講解
以前碰見這種使用場景都是直接order by rand()來處理的,但是效率實在是不敢恭維,所以最近又碰見這種場景,在網(wǎng)上找尋下比較好的解決辦法.
1.order by rand()
寫法:
SELECT id FROM `table` ORDER BY rand()
這種寫法的缺點是rand函數(shù)在order by中被執(zhí)行多次,影響效率。
2.max(id) * rand() 使用join
寫法:
SELECT
*
FROM
`table` AS t1
JOIN (
SELECT
ROUND(
RAND() * (
(SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`)
) + (SELECT MIN(id) FROM `table`)
) AS id
) AS t2
WHERE
t1.id >= t2.id
ORDER BY
t1.id
LIMIT 1;
網(wǎng)上的大佬們都推薦第二種寫法,特此記錄下,感覺最大id和最小id可以放在程序里來計算。
這里有個問題是如果取多條 那么一定是連續(xù)的,所以如果是不想取連續(xù)數(shù)據(jù),得循環(huán),不過此語句效率極高,所以循環(huán)查詢是可以做的。
以上就是全部相關知識點內(nèi)容,有需要的朋友們可以學習下,感謝大家對腳本之家的支持。
相關文章
原來MySQL?數(shù)據(jù)類型也可以優(yōu)化
這篇文章主要介紹了原來MySQL?數(shù)據(jù)類型也可以優(yōu)化,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學習有所幫助2022-08-08
mysql存儲過程之引發(fā)存儲過程中的錯誤條件(SIGNAL和RESIGNAL語句)實例分析
這篇文章主要介紹了mysql存儲過程之引發(fā)存儲過程中的錯誤條件(SIGNAL和RESIGNAL語句),結合實例形式分析了mysql使用SIGNAL和RESIGNAL語句來引發(fā)存儲過程中的錯誤條件相關操作技巧與注意事項,需要的朋友可以參考下2019-12-12
MySql字符串拆分實現(xiàn)split功能(字段分割轉列)
本文主要介紹了MySql字符串拆分實現(xiàn)split功能(字段分割轉列),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
SELinux導致PHP連接MySQL異常Can''t connect to MySQL server的解決方法
這篇文章主要介紹了SELinux導致PHP連接MySQL異常Can't connect to MySQL server的解決方法,有2種,一是設置允許,二是關閉SELinux,需要的朋友可以參考下2014-07-07
MySql總彈出mySqlInstallerConsole窗口的解決方法
這篇文章主要介紹了MySql總彈出mySqlInstallerConsole窗口的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09

