MySql高效的查詢出隨機記錄的方法

2021-07-05 00:07:41 字數 424 閱讀 3457

select * from t_code_game 

where id >= ((select max(id) from t_code_game)-(select min(id) from t_code_game)) * rand() + (select min(id) from t_code_game)

limit 1;

通過i最小與最大的自增長id 獲取乙個隨機數 。

該方法適用於隨機查詢出1條記錄。

如果希望查詢出多條記錄的話 如:limit 5是存在問題的 。因為獲得的隨機數是在記錄的最小與最大id之間隨機產生的, 所有會出現如隨機數剛好是你的最大記錄的id 那麼就會出現只能查詢出一條記錄的情況。

所有如果希望隨機查詢出多條記錄的話,建議您每次查詢出1條  迴圈查詢出你希望的條數!

mysql使用rand隨機查詢記錄的高效率方法

一直以為mysql隨機查詢幾條資料,就用 select from table order by rand limit 5 就可以了。但是真正測試一下才發現這樣效率非常低。乙個15萬餘條的庫,查詢5條資料,居然要8秒以上 檢視官方手冊,也說rand 放在order by 子句中會被執行多次,自然效率及...

高效的MySql 隨機讀取資料

一直以為mysql隨機查詢幾條資料,就用 select from table order byrand limit 5但是真正測試一下才發現這樣效率非常低。乙個15萬餘條的庫,查詢5條資料,居然要8秒以上 檢視官方手冊,也說rand 放在order by 子句中會被執行多次,自然效率及很低。you ...

mysql隨機顯示記錄 MySQL隨機讀取表中記錄

order by rand 來實現 select from table order by rand 記憶體臨時表 order by rand 是一般通過記憶體臨時表排序,可以通過執行計畫explain中extra欄位顯示using temporary觀察到。由於是記憶體排序,回表過程不涉及機械磁碟i...