mybatis-plus框架分页导致的SQL过慢优化

程序内执行查询SQL比Navicat执行查询SQL过慢优化

前言

最近做了两个项目的查询接口优化,在大数据量并且已优化过SQL的情况下,程序执行查询SQL比Navicat执行SQL的效率。

  • 项目A:springboot 1.5.9 + mybatis-plus2.3.1
  • 项目B:springboot 2.2.0 + mybatis-plus2.3.1

问题

两个项目的问题都出在了框架分页查询总记录数的自动生成的SQL上,导致了接口整体查询效率变慢。这个语句是在我们的查询语句的基础上嵌套一层。
例如:

SELECT COUNT(*) FROM (我们的查询SQL)

优化

第一种方式:

1、引入pagehelper分页插件,5.0.4版本以后增加手写 count 查询支持
mybatis-plus框架分页导致的SQL过慢优化_第1张图片


    com.github.pagehelper
    pagehelper
    5.2.0

2、在mybatis-plus配置启用手写 count 查询支持
mybatis-plus框架分页导致的SQL过慢优化_第2张图片

3、在xml文件添加查询count的语句。注意:需自行保证查询准确性。
mybatis-plus框架分页导致的SQL过慢优化_第3张图片

4、分页插件的使用,如下:
mybatis-plus框架分页导致的SQL过慢优化_第4张图片

第二种优化方式:

1、将mybatis-plus框架升级到3.0.7版本以上
mybatis-plus框架分页导致的SQL过慢优化_第5张图片



    com.baomidou
    mybatis-plus-boot-starter
    3.4.0


    com.baomidou
    mybatis-plus
    3.4.0


2、关闭COUNT查询与优化器,手动查询COUNT并写入。
mybatis-plus框架分页导致的SQL过慢优化_第6张图片

优化后效果

mybatis-plus框架分页导致的SQL过慢优化_第7张图片

总结

  • 项目A使用第一种方式优化。
  • 项目B使用第二种方式优化。

资料

  • mybatis-plus
  • PageHelper

你可能感兴趣的:(mybatis,java,sql,mysql)