程式內執行查詢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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/204002.html
標籤:其他
下一篇:JDBC報錯:The server time zone value is unrecognized or represents more than one time zone 已解決
