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

PHP + MySQL 分頁機制效能實測:COUNT+LIMIT vs 全取游標移動

     編輯:PHP 相關知識

測試環境

  • 硬體:PIII 550 / 128MB / 15.2GB
  • 軟體:Win98 + Apache + PHP4 + MySQL

方案對比

方案步驟
A: COUNT + LIMIT1) SELECT COUNT(1) ... 取總筆數
2) SELECT * ... LIMIT offset, size 取當頁資料
3) 總筆數透過隱藏欄位/Session 傳遞
B: 全取 + 游標移動1) SELECT * ... 取全結果集
2) mysql_data_seek() 移動指標至 offset
3) 讀取 size 筆

實測數據(10,000 筆資料)

方案 A 首頁平均: 1.3 秒
方案 A 其他頁平均: 1.9 秒
方案 B 首頁平均: (原文數據缺失)
方案 B 其他頁平均: (原文數據缺失)
效率比: 4.8125 (疑為 A/B 某指標比值)

結論與現代建議

  • 方案 A 避免將大量結果集載入 PHP 記憶體,適合中大型資料
  • 方案 B 記憶體壓力大,且 mysql_data_seek 在無緩衝查詢下不可用
  • 現代最佳實踐:SELECT COUNT(*) ... + SELECT ... LIMIT ?, ?(配合索引),或使用 SQL_CALC_FOUND_ROWS + FOUND_ROWS() 減少一次查詢
  • 超大資料量請採用「延遲關聯」或「游標分頁」避免深分頁掃描
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved