大数据量下 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之百万级数据查询优化   

浅析pagehelper分页原理   方法重载

就是方法名称重复,加载参数不同。

一.方法名一定要相同。
二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1.如果参数个数不同,就不管它的参数类型了!
2.如果参数个数相同,那么参数的类型必须不同。
三.方法的返回类型、修饰符可以相同,也可不同。

但是如果你能轻松上数仓、es、opensearch、大数据等等这些,以上就都可以忽略。

简单介绍数仓、es、opensearch、大数据:

参考网址:SpringBoot 集成ElasticSearch的几种方式 

该网址涉及很多开发应用工具:

lombok、hutool、knife4j;

如果你也在使用 Swagger,可以考虑使用 Knife4j,它不仅有更强大的 UI,更有多达 29 项的增强功能,它们并不是替代关系,就像 Mybatis Plus 和 Mybatis 的关系一样,它能助你更进一步提高开发生产力。

posted @ 2022-06-24 11:19  subtlman  阅读(2932)  评论(0)    收藏  举报