EasyExcel,轻松导出 100W 数据,不卡死,好用到爆!

一、简介
在实际工作中,一般都会涉及到导入导出的功能设计,本身实现不难,但是大数据量导出的时候,主要会面临两个问题:
1、导出的速度
2、内存占用过高导致的OOM的问题
之前自己封装了一个导出的模块,经过逐步改进,性能还可以,但是新手接手使用不太方便。无意间查询到阿里开源的EasyExcel框架,发现可以将解析的EXCEL的内存占用控制在KB级别,并且绝对不会内存溢出,还有就是速度极快,大概100W条记录,十几个字段,只需要65秒即可完成下载。
二、使用案例
2.1、pom依赖
2.2、POJO对象
2.3、测试环境
2.3.1、少量数据测试
数据量 < 20W, 一个SHEET一次查询导出
2.3.2、数据量适中(100W以内):一个SHEET分批查询导出
2.3.3.数据量很大(几百万都行):多个SHEET分批查询导出
三、总结
1、通过模拟的100W条记录,18个字段,测试导出是70s。在实际上产环境使用的时候,具体的还是要看自己写的sql的性能。sql性能快的话,会很快。
2、查询数据库的时候,原则是:减少查询sql,会有效地提高速率。
3、可优化地地方
使用pagehelper的时候,数据量大的时候,limit 0,20W, limit 20W,40W, limit 40W,60W, limit 60W,80W 随着下标增大,查询速率也会变慢,这一点需要认真优化SQL,比如根据ID来确定范围。