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

MySQL 分頁查詢實現:LIMIT 子句用法與大偏移量優化

     編輯:MySQL 綜合教學

基礎語法

offset = (page_no - 1) * page_size
LIMIT offset, page_size

實戰示例

SELECT t.* FROM table_name t
INNER JOIN (
  SELECT id FROM table_name WHERE condition ORDER BY sort_col LIMIT 1000000, 20
) tmp USING (id);
  • 子查詢僅掃描索引 (覆蓋),極快;外層按主鍵回表 20 行。

優化方案 2:游標分頁 (基於唯一遞增鍵)

SELECT COUNT(*) FROM table_name WHERE condition;
-- 大表可用近似值:EXPLAIN SELECT ... → rows 欄位,或定時統計表

最佳實踐清單

  1. **必須帶 ORDER BY**,否則結果順序不確定。
  2. 偏移量 < 10 萬時直接 LIMIT 可接受;超過必須優化。
  3. 游標分頁適合「無限滾動/加載更多」;傳統跳頁需延遲關聯。
  4. 覆蓋索引設計:WHERE + ORDER BY 列組合建立複合索引。
  5. 避免 SQL_CALC_FOUND_ROWS + FOUND_ROWS(),鎖競爭大,5.7+ 棄用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved