mysql 怎么实现随机查询并分页,不重复查询
生活随笔
收集整理的這篇文章主要介紹了
mysql 怎么实现随机查询并分页,不重复查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
需求:
方案:
- 用mysql的select * from tab order by rand()
- 用rand()會用問題,會出現數據重復:從數據庫的rand()和分頁原理上,出現重復不可避免(分頁其實對sql語句結果的分段提取,對結果集從第m條記錄到第n條記錄;mysql的rand()實現原理是每次sql的結果集的全部按算法打亂排序;而分頁是有上下文關系的,所以可能出現某條記錄出現在不同的分頁中,如某條記錄在第一次sql執行時,rand()排序后,在第一頁,而第二次執行sql時,rand()排序后,落在第二頁,這條記錄在分頁過程中,用了多次)
- 在可以容忍重復的情況下可以用,不過mysql的rand()函數效率非常低,建議用表中的主鍵做散列計算排序(如主鍵是數字類型,可求余運算來散列)
- 如不能容忍重復,數據庫好像比較難直接解決(網站web應用又沒有固定的連接,利用session id標識,建立臨時表?好像不大現實)
- 第一頁時,取到內存,然后翻頁時,用剩余數據,比較復雜,也不大現實(標識session id,何時清理...?)
結論:
轉載于:https://my.oschina.net/solarxie/blog/131171
總結
以上是生活随笔為你收集整理的mysql 怎么实现随机查询并分页,不重复查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python飞机大战游戏素材_pytho
- 下一篇: java参数传入的是一个类名_Java编