大数据量下 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 的关系一样,它能助你更进一步提高开发生产力。