前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL分页优化?用这一招,实用又简单

MySQL分页优化?用这一招,实用又简单

作者头像
ImportSource
发布2018-10-23 11:22:31
2.2K0
发布2018-10-23 11:22:31
举报
文章被收录于专栏:ImportSourceImportSource

我们在做一些数量级不是爆大的分页场景时,一般都会去使用LIMIT加offfset的方式来实现。一般还会再加个order by来做个排序。

上面的做法再配合索引,性能一般会不差。

但这种分页的方式有个很恼火的问题,就是偏移量越大,越到后面就会越慢。

即使是elastic search也有这样的问题。

这个问题的核心其实就是offset(偏移量)。当偏移量越大时,mysql会扫描大量的行,然后抛弃掉。

所以就会很慢。

一个非常简单又实用的方法就是,你可以通过记录绝对位置的方式,把这个避免掉。

就像你看书一样,上一次看到哪里你会夹个书签,下次看的时候直接就翻到了。

数据库我们也可以这样,比如我们可以根据 更新时间排倒序,然后每次分页查询都会记录最后的时间,然后下一页就从这个时间点开始,取一页就是了。

SELECT * FROM tb_crm WHERE updated_at<#{上一页的最后一条的updated_at}

ORDER BY updated_at DESC LIMIT 20;

通过这种书签配合limit的方式就可以避免offset

这样的话,无论翻页到多么的后面,性能都不差。

如果觉得不错就点个赞,甚至直接分享都可以。

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

本文分享自 ImportSource 微信公众号,前往查看

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

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

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