MySQL的分页查询语句为:

select table from column limit start pageSize;

start:偏移量
currentPage:当前页
PageSize:每页记录数
分页查询的公式:start=(currentPage-1)PageSize

select colum... from tableName limit (currentPage-1)pageSize PageSize

当表中数据量非常大的时候,分页查询越靠后的数据速度就越慢

优化一:如果表中的id是连续自增的,根据查询的页数和查询的记录数可以算出查询的id的范围
比如说要查询第10页,查20条。id=(currentPage-1)pageSize+1=(10-1)*20+1=181,+1的原因是因为分页查询的偏移量从是0开始

SELECT * FROM `user` WHERE `id`  between 181 and 20;
#或
select * from `user` where id >= 181 limit 20;

优化二:如果表中的id不是连续自增,只是递增,可以先定位偏移位置的 id,然后往后查询.
比如说查询第10页,20条 start=(currentPage-1)pageSize=(10-1)20=180

SELECT * FROM `user` WHERE id>=(SELECT id FROM `user` LIMIT 180,1) LIMIT 20

优化三:如果表中的id不是自增也不是递增,可以连接临时表优化

SELECT
	* 
FROM
	`user` a
	JOIN ( SELECT id FROM `user` LIMIT 180, 20 ) b ON a.id = b.id;