侧边栏壁纸
博主头像
丛庆

没事儿写代码,有事写代码。email:1024@cong.zone

  • 累计撰写 116 篇文章
  • 累计创建 97 个标签
  • 累计收到 4 条评论

【Mysql】解决mysql的分页场景下,页数越大查询速度越慢的方法

丛庆
2022-03-25 / 0 评论 / 0 点赞 / 410 阅读 / 508 字 / 正在检测是否收录...
温馨提示:
部分资料和图片来源于网络,如有危害到您的利益请与我联系删除,1024@cong.zone。

一 问题描述
select * from table limit 0,10扫描满足条件的10行,返回10行,
但当limit 99989,10的时候数据读取就很慢,limit 99989,10的意思扫描满足条件的99999行,扔掉前面的99989行,返回最后的10行,这样速度就会很慢了。
二 解决方案
利用表的覆盖索引来加速分页查询,使用索引查询的sql语句中如果select的字段只包含索引列(覆盖索引),那么这种情况查询速度就会很快。
举个例子:
当id字段是主键,在部分数据库引擎中会创建主键索引。
select id from table limit 99989,10;
会发现查询结果很快。
通过这个查询中返回的id,再次查询对应id(因为又主键索引也会很快).
select * from table where id >= (select * from product limit 99989,1) limit 10;
select * from table where id in (select * from product limit 99989,10);
select * from table t join (select * from table limit 99989,10) t1 on t.ID=t1.id;

0

评论区