天天看点

Mysql实现分页

1、Mysql的limit用法

limit分页公式

(1)limit分页公式:curPage是当前第几页;pageSize是一页多少条记录
limit (curPage-1)*pageSize,pageSize
(2)用的地方:sql语句中
select * from student limit(curPage-1)*pageSize,pageSize;      

总页数公式

(1)总页数公式:totalRecord是总记录数;pageSize是一页分多少条记录

int totalPageNum = (totalRecord +pageSize - 1) / pageSize;

(2)用的地方:前台UI分页插件显示分页码

(3)查询总条数:totalRecord是总记录数

SELECT COUNT(*) FROM tablename

例如:

select * from orders_history where type=8 limit 100,100;

select * from orders_history where type=8 limit 1000,100;

select * from orders_history where type=8 limit 10000,100;

select * from orders_history where type=8 limit 100000,100;

select * from orders_history where type=8 limit 1000000,100;

但是这种查询比较慢,因为:limit 200000,200,需要扫描200200行,如果在一个高并发的应用里,每次查询需要扫描超过20W行,效率十分低下。

limit m语句

 select * from dept where deptno >10 order by deptno asc limit n;//下一页

 select * from dept where deptno <60 order by deptno desc limit n//上一页

这种方式不管翻多少页只需要扫描n条数据。

例如:每页10条数据,当前是第10页,当前条目ID的最大值是109,最小值是100.(当前100-109)
那么跳到第9页:
select * from dept where deptno<100 order by deptno desc limit 0,10;   //倒序

那么跳到第8页:
select * from dept where deptno<100 order by deptno desc limit 10,10;

那么跳到第11页:
select * from dept where deptno>109 order by deptno asc limit 0,10;