首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 分頁查詢優化:從基礎 LIMIT 到子查詢深度分頁高效方案

     編輯:MySQL 資料庫相關知識

基礎分頁:適用中小數據量


SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...

關鍵:確保使用索引。例:WHERE category_id = 123 ORDER BY id LIMIT 50, 10,在 (category_id, id) 建立複合索引最佳。

深度分頁效能陷阱

隨頁碼增大,LIMIT 10000, 10 偏移量極大,速度明顯變慢。MySQL 需掃描前 10000 行再丟棄,代價高昂。

子查詢優化方案

利用覆蓋索引特性,先在索引上定位偏移位置的主鍵,再回表查詢:


SELECT * FROM articles 
WHERE category_id = 123 
  AND id >= (
    SELECT id FROM articles 
    WHERE category_id = 123 
    ORDER BY id LIMIT 10000, 1
  )
LIMIT 10;

子查詢僅掃描索引 (極快) 獲取第 10001 行的 id,外層查詢直接定位該 id 之後的 10 行,避免大偏移掃描。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved