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

MySQL LIMIT 分頁語法詳解:OFFSET 與 ROW COUNT 正確理解

     編輯:MySQL 綜合教學

MySQL LIMIT 分頁語法詳解:OFFSET 與 ROW COUNT 正確理解

LIMIT 是 MySQL 分頁核心語法,但新手極易誤解參數含義。本文釐清 LIMIT offset, row_count 真實語義,對比常見錯誤理解。

語法定義


LIMIT [offset,] row_count
# 或
LIMIT row_count OFFSET offset
  • offset:跳過的行數(從 0 開始),LIMIT 5, 20 表示**跳過前 5 行**。
  • row_count:返回的最大行數,LIMIT 5, 20 表示**最多返回 20 行**。

❌ 三大錯誤理解

錯誤理解實際行為正確認知
從第 5 行開始,顯示到第 20 行跳過 5 行,取 20 行(第 6~25 行)offset=跳過行數,row_count=取行數
顯示第 5 頁,每頁 20 行同上,與頁碼無直接關係頁碼轉換:offset = (page-1)*size
LIMIT 20, 5 = LIMIT 5, 20完全不同:前者跳 20 取 5,後者跳 5 取 20參數順序固定,不可交換

✅ 正確分頁轉換公式


-- 第 1 頁 (page=1, size=20)
LIMIT 0, 20    -- 或 LIMIT 20 OFFSET 0

-- 第 2 頁 (page=2, size=20)
LIMIT 20, 20   -- offset = (2-1)*20 = 20

-- 第 N 頁
LIMIT (N-1)*size, size

效能提醒

  • LIMIT 100000, 10 需掃描 100,010 行 → 棄讀 100,000 行 → **極慢**。
  • 深翻頁優化:參考分頁效能探索文章(扶梯式/延遲關聯/覆蓋索引)。
  • LIMIT 0, 10 等價於 LIMIT 10,單參數時預設 offset=0。

配合 ORDER BY 使用


-- 必須加 ORDER BY 保證分頁穩定性
SELECT * FROM articles ORDER BY created_at DESC LIMIT 10 OFFSET 20;

無 ORDER BY 時,分頁結果順序不確定,翻頁會出現重複/遺漏資料。

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