大数据量下 PageHelper 分页查询性能问题与分析
大数据量下 PageHelper 分页查询性能问题与分析
pagehelper之百万级数据查询优化
开启debug源码探寻之旅。
一、PageHelper是通过limit拼接sql实现分页的;
重构pagehelper
低效率查询语句:select * from user where age = 10 limit 100000,10;
高效率查询语句:
SELECT a.* FROM USER a
INNER JOIN
(SELECT id FROM USER WHERE age = 10 LIMIT 100000,10) b
ON a.id = b.id;
二、当数据量达到百万级别以后,PageHelper的count的效率就多余了,每一次翻页就需要做一次count
pagehelper怎么关count呢?也比较简单:
PageHelper.getLocalPage().setCount(false);
解决这种情况:
相同条件的count可以做一个缓存操作,其实就是有两种方案了;
配合前端,不用展示所有的条数;
如果需要所有条数单独做查询并缓存,也并不适合短时间内变化较大的数据。
参考网址:pagehelper之百万级数据查询优化
就是方法名称重复,加载参数不同。
一.方法名一定要相同。
二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1.如果参数个数不同,就不管它的参数类型了!
2.如果参数个数相同,那么参数的类型必须不同。
三.方法的返回类型、修饰符可以相同,也可不同。
但是如果你能轻松上数仓、es、opensearch、大数据等等这些,以上就都可以忽略。
简单介绍数仓、es、opensearch、大数据:
参考网址:SpringBoot 集成ElasticSearch的几种方式
该网址涉及很多开发应用工具:
lombok、hutool、knife4j;
如果你也在使用 Swagger,可以考虑使用 Knife4j,它不仅有更强大的 UI,更有多达 29 项的增强功能,它们并不是替代关系,就像 Mybatis Plus 和 Mybatis 的关系一样,它能助你更进一步提高开发生产力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!