正常分页比如TP框架是可以直接使用paginate链式函数或者page函数
但是如果想直接使用select方法查询 , 就需要手动计算偏移量, 在limit中使用
$page = input('page',1,'intval');
$limit = input('limit',10,'intval');
// 分页偏移量
$offset = ($page - 1) * $limit;
$limit = $offset.','.$limit;
$users = UserModel::order('id desc')->limit($limit)->select();
但是,众所周知mysql很神奇
当一个查询语句偏移量offset很大的时候,如select * from table limit 10000,10 , 先获取到offset的id后,再直接使用limit size来获取数据,效率会有一些提升,但不是很大。
比如:
[SQL] select * from user order by id limit 1000,10; 受影响的行: 10 时间: 0.029s
[SQL] select * from user where id>(SELECT id from user order by id limit 1000,1) limit 10; 受影响的行: 10 时间: 0.012s