mybatisplus查询百万数据慢问题

mybatisplus查询百万数据慢问题_第1张图片

1.遇到的问题

本次查询的数据是一个视图,查询的数据量也比较大,整体有百万数据。

错误提示:

2023-11-02 07:55:52 [http-nio-11605-exec-3] ERROR c.a.druid.filter.stat.StatFilter [] [] - slow sql 6568 millis. SELECT COUNT(1) FROM ( 

2.尝试方法 

经过查询,对大量数据进行处理时,为防止内存泄漏情况发生,也可以采用游标方式进行数据查询处理。这种处理方式比常规查询要快很多。但是对我这个没有效果。

当查询百万级的数据的时候,还可以使用游标方式进行数据查询处理,不仅可以节省内存的消耗,而且还不需要一次性取出所有数据,可以进行逐条处理或逐条取出部分批量处理。一次查询指定 fetchSize 的数据,直到把数据全部处理完。

Mybatis 的处理加了两个注解:@Options 和 @ResultType

 游标查询

@Mapper

public interface BigDataSearchMapper extends BaseMapper {

    // 方式一 多次获取,一次多行

    @Select("SELECT bds.* FROM big_data_search bds ${ew.customSqlSegment} ")

    @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = 1000000)

    Page pageList(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);

3.解决办法 

优化视图中的sql,增加索引解决问题。 

你可能感兴趣的:(java,数据库,开发语言)