- mysql大表分页查询
- 原因
- mysql分页查询是先查询出来offset+limit行数据,然后放弃前offset,取limit条记录,造成了越往后的页数,查询时间越长
- 思路
- 转换offset让offset尽可能的小 最好能每次查询都是第一页即offset为0
- 上/下一页 跳转固定页数
- 解决方案
- 上/下一页
- 按照id排序 上一页最大id当参数传入 有序id(聚簇索引)当参数传入 order by id id>lastEndId limit 10
- 按照其他索引排序(可能存在重复记录 解决可以>=其他索引and unique index>lastEndId) 思路同上
- 跳转固定页数(lastEndId lastEndOffset)
- 跳转到上/下任意页 两种思路(性能取决于base数据的offset大小)
- 倒序 将上一次后面的数据作为基础数据倒序分页 根据总数 算出逆序查询对应的offset limit offset,10 (newOffset = totalCount - offset - limit)
- 正序 将上一次后面的数据作为基础数据正序分页 limit offset,10
- offset为0 先查出来分页id值后再根据最大id查询记录
- 跳转到上/下任意页 两种思路(性能取决于base数据的offset大小)
- 上/下一页
- 原因
mysql大表分页查询
最新推荐文章于 2024-06-11 18:11:54 发布