Mybatis-Plus分页插件查询慢解决方案

简介: Mybatis-Plus分页插件查询慢解决方案

问题

需求反馈前端界面查询速度很慢。

分析

  1. f12查看接口响应时间达到了5.47s。

  1. 查看后端代码逻辑,就是传了些参数,分页查询了一个列表的数据。分页插件使用的是mybatis-plus的分页插件,PaginationInterceptor。
  2. 把后端调用的sql单独拿出来在navicat中进行执行,才0.54s左右,其实很快了,数据量也不大。分页查询即使加上查总数的count语句,单独拿出来在navicat中执行,也很快。
  3. 综上,总体来说这次响应速度慢和sql查询的关系不是很大,查看后台日志时发现,在打印出sql语句之后,会卡顿一会儿,随后才会输出count语句。查阅mybatis-plus插件的官网发现,其中有个参数: optimizeCountSql , 默认为true。在编写count语句的时候,会对sql语句进行优化。

以此推断应该是这个引起的,因为业务中sql语句还比较复杂,这里要解析进行优化的话,可能需要花费一点儿时间。尤其其中有一些难以解析的表达式,更是耗费时间。

解决方案

  1. 将上述属性设置为false,测试之后解决问题,接口的速度达到500多毫秒。
Page page = new Page();
page.setCurrent(MapUtils.getIntValue(paramMap, "pageNum"));
page.setSize(MapUtils.getIntValue(paramMap, "pageSize"));
// 关闭count sql的优化,解决前端查询慢的效率问题。
page.setOptimizeCountSql(false);
  1. 还有种方案,就是这里自定义一个count查询的sql,不用其优化的sql。即利用下图中的countId属性来解决。或者单独把总数查询出来后,再来设置其总数。

后续思考

此例中,sql语句写的比较复杂,查询的字段中用了很多转换函数,后续也需要继续优化。是否考虑关于字典的优化放在前端去显示。或者数据库冗余字段,直接查询,不用转换?

目录
相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
193 8
|
21天前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
116 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
11天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
21天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
26天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
14 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
56 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
40 1
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
118 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
353 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个