程序执行查询SQL过慢优化

   日期:2020-11-06     浏览:108    评论:0    
核心提示:程序内执行查询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上,导致了接口整体查询效率变慢。这个语句是在我们的查询语句的基础上嵌套一层。例如:S

程序内执行查询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 查询支持

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>

2、在mybatis-plus配置启用手写 count 查询支持

3、在xml文件添加查询count的语句。注意:需自行保证查询准确性。

4、分页插件的使用,如下:

第二种优化方式:

1、将mybatis-plus框架升级到3.0.7版本以上

<!-- mybatis-plus start -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.0</version>
</dependency>
<!-- mybatis-plus end -->

2、关闭COUNT查询与优化器,手动查询COUNT并写入。

优化后效果

总结

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

资料

  • mybatis-plus
  • PageHelper
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服