Mysql千萬級數據快速分頁查詢方案


文章目錄

 

實際應用場景說明

服務器配置 : 阿里雲 2核4G mysql服務器
生產場景 : 將mysql數據庫中的文章數據進行批量化處理更新
問題詳情: 當分頁數過大時查詢速度很慢
解決方法: 使用了between and 的方式來加快了查詢速度

1.limit方法的局限性

select * from articles limit 100,500
> 查詢0.06秒
  • 1
  • 2
  • limit是最常用的分頁方法,它在執行過程中,相當於先遍歷了前100個,然后取了第100到600個,舍棄了前100個.但是limit僅適用於小數據范圍內的分頁查詢 小數據

    select * from articles limit 170500,500

    查詢 193s

  • 當查詢170500開始的500條數據時,因為要先查詢前170500條數據,數據內容龐大,所以查詢很慢

2.通過主鍵id過濾的方法

select * from articles where id >(select id from articles limit 170500,1) limit 500
> 查詢 2.5s
  • 1
  • 2
  • 這種方法的好處是首先通過id索引快速定位到了分頁數據的起始位置(避免了全文檢索),並且用limit 方法快速獲取了從起始位置往后的500個數據。

3.between and

select * from articles where id between (select id from articles limit 170000,1) and (select id from articles limit 170500,1)
> 查詢 2s
  • 1
  • 2
  • 最優方法between and 前一種方法相當於是先利用id索引的優勢快速定位到了分頁的起始位置,然后往后截取了500條數據.between and的方法相當於也是利於id索引的優勢,但是同時定位了分頁的起始和終止的位置,截取了中間的信息,因此速度會更快.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM