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

ThinkPHP limit() 分頁限制方法完整用法指南

     編輯:PHP 綜合知識

基本用法

// 取前 10 筆
$User->where('status=1')->limit(10)->select();

// 分頁:跳過 10 筆取 25 筆 (第 2 頁,每頁 25)
$User->limit(10, 25)->select();
// 或 3.1+ 陣列寫法
$User->limit([10, 25])->select();

寫操作同樣生效

// 僅更新前 3 筆符合條件的記錄
$User->where('score=100')->limit(3)->save(['level' => 'A']);

// 僅刪除前 5 筆
$User->where('status=0')->limit(5)->delete();

分頁參數計算

$page = max(1, (int)($_GET['p'] ?? 1));
$perPage = 20;
$offset = ($page - 1) * $perPage;

$list = $Article->limit($offset, $perPage)->select();
$total = $Article->count();
$pages = ceil($total / $perPage);

大資料表效能提醒

  • 深分頁 (OFFSET 1000000) 會掃描大量行再丟棄,效能急劇下降
  • 優化方案:WHERE id > last_seen_id ORDER BY id LIMIT 20 (游標分頁)
  • 或建立覆蓋索引、使用 SQL_CALC_FOUND_ROWS 避免二次查詢

相容性說明

limit() 會自動轉換為各資料庫方言:

資料庫轉換語法
MySQLLIMIT offset, count
PostgreSQLLIMIT count OFFSET offset
SQL ServerOFFSET offset ROWS FETCH NEXT count ROWS ONLY
OracleROWNUM 包裝查詢
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved