MySQL 分頁技術完整總結:6 種方法優缺點對比
方法 1:直接 LIMIT M,N (基本分頁)
SELECT * FROM table_name LIMIT M, N
- 適用:資料量少 (百/千級)
- 缺點:全表掃描,速度慢;結果集順序可能不穩定
- 原理:從結果集第 M 位取 N 筆,其餘捨棄
方法 2:主鍵/唯一索引 + WHERE id > offset
SELECT * FROM table_name WHERE id_pk > (pageNum * 10) LIMIT 10
- 適用:資料量大 (萬級以上)
- 優點:索引掃描,極快
- 風險:若查詢結果非按 pk 排序,可能漏資料
方法 3:索引 + ORDER BY 確保穩定
SELECT * FROM table_name
WHERE id_pk > (pageNum * 10)
ORDER BY id_pk ASC
LIMIT 10
- 適用:大資料量,需穩定結果
- 關鍵:ORDER BY 欄位為主鍵/唯一索引 → 排序操作被消除,結果集穩定
- 限制:MySQL 僅支援 ASC 真正優化,DESC 為假 (未來可能改善)
方法 4:Prepared Statement + 索引
PREPARE stmt_name FROM
SELECT * FROM table_name
WHERE id_pk > (? * ?) ORDER BY id_pk ASC LIMIT 10
- 適用:大資料量
- 優點:Prepared Statement 比一般查詢更快 (預編譯)
方法 5:存儲過程封裝 (推薦融合方法 4)
- 適用:大資料量
- 優點:邏輯封裝在伺服器端,網路交互少,相對更快
- 作者推薦方案
方法 6:(文中未詳細展開,通常為游標/臨時表等進階技巧)
選型建議
| 資料量 | 推薦方法 |
| 百/千級 | 方法 1 (簡單直接) |
| 萬級以上 | 方法 3 + 方法 4/5 (索引+排序+預編譯/存儲過程) |
分頁優化核心:避免全表掃描,善用索引覆蓋,固定排序確保穩定。