首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql 大数据量的分页优化

mysql 大数据量的分页优化

作者头像
dys
发布2018-04-02 16:02:28
发布2018-04-02 16:02:28
1.5K0
举报
文章被收录于专栏:性能与架构性能与架构

使用limit进行分页,翻到10000多页后效率低

原因

limit offset 会逐行查找,是先查询再跳过

优化思路

(1)从业务逻辑

不允许翻过100页,例如百度一般可以翻到70页左右

(2)技术上

select * from table limit 5000000,10 时就很慢了,大概需要4秒多

优化方法(1)

select * from table where id>5000000 limit 10;

这样就非常快,0.02s左右,因为使用了id索引

但这样用有前提,id是连续的,中间的数据不能删,否则id为5000000的并不是第5000000个记录

优化方法(2)

如果必须用limit offset查询,就用延迟关联

select id from table limit 5000000,10

这样只查询id列,实现了索引覆盖,就会很快

select t.* from table t inner join (select id from table limit 5000000,10) as tmp on t.id=tmp.id;

通过内连接再获取分页后每条记录的详细信息

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档