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

MySQL 兩項核心效能實測:存儲過程 vs 直寫 SQL、LIMIT 分頁優化驗證(21萬筆測試數據)

     編輯:MySQL 綜合教學

測試環境

  • 資料量:212,992 筆
  • MySQL 版本:5.0
  • 硬體:同一台機器
  • 操作:批次 UPDATE

測試一:存儲過程效能提升驗證

測試邏輯

同樣的批次更新邏輯,分別用存儲過程與客戶端循環發送 SQL執行 5 次取平均。

實測數據

輪次存儲過程直寫 SQL提升幅度
1 10,985 ms 14,906 ms 26.3%
2 11,562 ms 14,828 ms 22.0%
3 11,890 ms 14,500 ms 18.0%
4 11,360 ms 15,047 ms 24.5%
5 12,407 ms 14,578 ms 14.9%

結論:存儲過程在大批量資料處理上穩定提升 15~26% 效能,主要優勢:

  • 減少網路往返(客戶端→伺服器)開銷。
  • 伺服器端編譯優化,避免重複解析。
  • 批次操作原子化,減少交互協議開銷。

反駁觀點:「存儲過程無效能優勢」為錯誤認知,實測證明在高批次寫入場景有明顯優勢。

測試二:LIMIT 分頁優化驗證

測試場景 A:淺分頁


-- 原始
LIMIT 10, 10
-- 優化
WHERE id >= (SELECT id FROM t ORDER BY id LIMIT 10, 1) LIMIT 10
輪次原始優化
1 10 ms 15 ms
2 10 ms 15 ms
3 10 ms 15 ms

結論:淺分頁原始 LIMIT 更優(子查詢額外開銷大於掃描收益)。

測試場景 B:深分頁


-- 原始
LIMIT 100000, 10
-- 優化
WHERE id >= (SELECT id FROM t ORDER BY id LIMIT 100000, 1) LIMIT 10
輪次原始優化提升
1 78 ms 46 ms 41%
2 78 ms 47 ms 40%
3 78 ms 47 ms 40%

測試場景 C:極深分頁


LIMIT 200000, 10
輪次原始優化提升
1 156 ms 79 ms 49%
2 188 ms 78 ms 59%
3 153 ms 78 ms 49%
4 141 ms 94 ms 33%
5 141 ms 93 ms 34%

測試場景 D:大頁面深分頁


LIMIT 200000, 10000
輪次原始優化提升
1 171 ms 94 ms 45%
2 140 ms 78 ms 44%
3 172 ms 93 ms 46%
4 156 ms 93 ms 40%
5 157 ms 94 ms 40%

綜合結論與建議

  1. 存儲過程:大批量寫入/複雜邏輯封裝場景推薦使用,效能穩定提升 15%+。
  2. LIMIT 優化:
    • Offset < 1000:直接用 LIMIT。
    • Offset ≥ 10000:必須優化,子查詢定位 ID 可節省 40~60% 時間。
    • 極大 Offset + 大 Limit:優化效果更明顯。
  3. 游標分頁(記住上頁最大 ID)為終極方案,效能與 Offset 無關,強烈建議前端採用「載入更多」模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved