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

MySQL LIMIT 子句優化查詢效能完整分析

     編輯:PHP 綜合知識

LIMIT 基本語法

SELECT ... LIMIT [offset,] row_count
-- 或
SELECT ... LIMIT row_count OFFSET offset
  • offset:起始位移(從 0 開始)
  • row_count:回傳筆數上限

分頁查詢對比:Oracle vs MySQL

Oracle 需巢狀子查詢 + ROWNUM:

SELECT * FROM (
    SELECT a1.*, ROWNUM rn FROM testtable a1 WHERE ROWNUM <= 1000
) WHERE rn > 20;

MySQL 只需:

SELECT * FROM testtable LIMIT 20, 980;

MySQL 手冊:LIMIT 優化行為

  1. 小結果集:LIMIT n 時,MySQL 可能改用索引而非全表掃描
  2. 配合 ORDER BY:找到前 N 筆符合條件即停止排序,不排序全表
  3. 配合 DISTINCT:找到第一筆唯一值即停止
  4. 配合 GROUP BY:不計算不必要的群組
  5. 傳輸優化:傳送第 N 行給客戶端後放棄後續查詢
  6. LIMIT 0:快速回傳空結果集,可用於取得欄位型別資訊
  7. 臨時表大小:依 LIMIT 估算所需記憶體

實務建議

  • 分頁查詢務必加上 ORDER BY,否則結果順序不確定
  • 大偏移量 (大頁碼) 效能會下降,參考下一篇「子查詢優化法」
  • LIMIT n 等同 LIMIT 0, n
  • 負數 offset (如 LIMIT 95, -1) 表示「從第 96 筆到結束」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved