分页查询优化limit的方法和原理
一、背景
直接从数据库查询所有数据,耗时、耗内存,改为分页查询部分数据
二、常规分页查询
1. mysql: limit 从第m条数据开始,查询n条数据
select * from table limit m,n
2. sql server: top+子查询
3. 原理:从数据库的第一条记录开始扫描
a. 越往后,即m越大,查询越慢
b. 查询的数据越多,即n越大,查询越慢
三、优化方式
1. 使用子查询进行优化,先查出一个id,再根据id进行limit,查出数据
2. 根据id做限定进行优化,把id作为where的条件
3. 使用临时表进行优化,先查出所有id,再试用in查出数据
select * from table where id in (select id from table limit m,n)
四、优化原理
1. select * from table limit m,n 的查询过程
a. 查询到索引叶子节点数据
b. 根据叶子节点上的主键值,去聚集索引,查询需要的全部字段值
2. 优化后
参考:
https://mp.weixin.qq.com/s/CmlfkRki0lCiDEIsz5pDpg
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步