
mybatis-plus分页插件之count优化
示例代码
分页插件配置
分页代码示例
分页查询control
分页查询service
分页查询mapper
分页查询mapper.xml
优化前分页sql执行流程
1,先执行count统计,统计sql如下,规则时方法sql结果作为子查询,在外套一层select count(*) from (select * from split_experiment_type);
2, count > 0 ,在执行方法映射 sql
性能分析
select count(*) from (select * from split_experiment_type)
这个sql肯定有问题,select * from split_experiment_type 会扫描全列,即使用明确列替换 * 也是会扫描在统计count是不需要的列;
期望是在count统计数,最优解是只统计符合条件的2级索引,或者主键索引,只统计索引列,性能刚刚的
但是统计count是sql是自动生成的,有什么办法不使用mybatis-plus的分页插件自动生成的count的sql呢,当然可以,下面我们看下mybatis-plus的分页插件部分源码
所以,可以看出如果我们在page对象中配置的countId(mapper里自定义统计count的方法名),并且存在mapper,存在countId对象值得统计方法(返回值是Long),并且在xml中进行了实现,就会走自定义的统计方法
优化后分页查询代码
controller的查询方法不变
service里
mapper里新增一个selectAll_COUNT的方法
mapper.xml新增一个selectAll_COUNT方法的实现
优化后分页查询sql执行流程
count的统计可以通过自己想法进行优化,避免不必要的性能开支
特此记录,希望能帮到大家
文章转载自公众号:IT学习道场
