mybatisplus查询百万数据慢问题

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,增加索引解决问题。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值