首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL LIMIT 分頁優化:大偏移量性能陷阱與子查詢優化實測(副本)

     編輯:MySQL 綜合教學

MySQL LIMIT 分頁優化:大偏移量性能陷阱與子查詢優化實測

LIMIT offset, rows 在分頁場景下,隨著 offset 增大性能急劇下降。本文通過實測對比「直接 LIMIT」與「子查詢定位主鍵再回表」兩種方案在小/大偏移量下的耗時差異,給出明確優化閾值建議。

實測場景

同一張表 user,主鍵 uid,取 10 條數據。

1. 小偏移量(offset=10)

-- 直接 LIMIT
SELECT * FROM user LIMIT 10000, 10;       -- ~0.0187s
-- 子查詢定位主鍵
SELECT * FROM user WHERE uid >= (SELECT uid FROM user ORDER BY uid LIMIT 10000, 1) LIMIT 10; -- ~0.0061s
結論:大偏移子查詢僅為直接 LIMIT 的 1/3,offset 越大優勢越明顯。

優化原理

直接 LIMIT offset, n 需掃描前 offset+n 行再丟棄前 offset 行;子查詢先利用覆蓋索引快速定位目標主鍵值,再回表取數據,避免大量無效行掃描。

最佳實踐

  • 偏移量較小(如首頁、前幾頁):直接 LIMIT offset, rows。
  • 偏移量較大(深分頁、后臺導出):改用 WHERE pk >= (SELECT pk FROM table ORDER BY pk LIMIT offset, 1) LIMIT rows。
  • 極深分頁(百萬偏移):建議業務層面限制翻頁深度,或采用游標式分頁(WHERE pk > last_pk LIMIT rows)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved