分頁查詢優化limit的方法和原理


一、背景

直接從數據庫查詢所有數據,耗時、耗內存,改為分頁查詢部分數據

 

二、常規分頁查詢 

1.  mysql: limit 從第m條數據開始,查詢n條數據

select * from table limit m,n 

2. sql server: top+子查詢

3. 原理:從數據庫的第一條記錄開始掃描

a. 越往后,即m越大,查詢越慢

b. 查詢的數據越多,即n越大,查詢越慢

 

三、優化方式

1. 使用子查詢進行優化,先查出一個id,再根據id進行limit,查出數據

2. 根據id做限定進行優化,把id作為where的條件

3. 使用臨時表進行優化,先查出所有id,再試用in查出數據

select * from table where id in (select id from table limit m,n)

 

四、優化原理

1. select * from table limit m,n 的查詢過程

a. 查詢到索引葉子節點數據

b. 根據葉子節點上的主鍵值,去聚集索引,查詢需要的全部字段值

2. 優化后

 

 

 

參考:

https://mp.weixin.qq.com/s/CmlfkRki0lCiDEIsz5pDpg

 


免責聲明!

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



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