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

MySQL 取前 N 行資料:LIMIT 子句完全指南

     編輯:MySQL 資料庫相關知識

    語法形式

    LIMIT row_count
    LIMIT offset, row_count
    LIMIT row_count OFFSET offset

    常用範例

    ORDER BY id DESC LIMIT 10ORDER BY id DESC LIMIT 0, 10ORDER BY id ASC LIMIT 5, 10SELECT cat_id FROM shop_goods_type ORDER BY cat_id DESC LIMIT 1
    SQL含義
    按 id 降序取前 10 筆 (最新 10 筆)
    同上,明確 offset=0
    按 id 升序跳過前 5 筆,取第 6-15 筆
    取最大 cat_id (單行)

    分頁公式

    第 page 頁,每頁 size 條 (page 從 1 開始)
    offset = (page - 1) * size
    LIMIT offset, size

    效能陷阱與優化

    • 深分頁問題:LIMIT 1000000, 20 需掃描 100 萬行再丟棄 → 極慢
    • 優化 1:游標分頁 (適合遞增主鍵)
      WHERE id > last_seen_id ORDER BY id LIMIT 20
    • 優化 2:覆蓋索引:SELECT id FROM t WHERE ... ORDER BY id LIMIT ... 僅掃描索引
    • 優化 3:延遲關聯:
      SELECT * FROM t INNER JOIN (SELECT id FROM t WHERE ... ORDER BY id LIMIT 1000000, 20) tmp USING (id)

    與 SQL Server/Oracle 對比

    資料庫語法
    MySQL / PostgreSQL / SQLiteLIMIT / OFFSET
    SQL Server 2012+OFFSET ... ROWS FETCH NEXT ... ROWS ONLY
    SQL Server 2008-TOP / ROW_NUMBER() 窗口函數
    Oracle 12c+OFFSET ... ROWS FETCH NEXT ... ROWS ONLY
    Oracle 11g-ROWNUM / ROW_NUMBER()
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved