导出是背景管理系统的共同函数。当数据量特别大时,内存溢出和口吃页。包装导出后,使用批次查询数据避免内存溢出,并使用SXSSFWorkbook方法将数据缓存到Fileto上的文件中,可以解决下载大文件Excel卡的问题。
但是,存在不便的包装和不便包装的问题,另一个是这些POI的操作仍然存在记忆中已占据的问题。
无意间查询Ali的开源EasyExcel框架,发现Excel的内存占用可以控制到KB级别,并且不会溢出(内部实现)。几乎可以在70秒内下载几个字段。
然后,他放弃了包装,转身学习了Ali的开源EasyExcel。但是,老实说,他当时打包的人仍然是一些技术内容,例如:外观模式,模板方法模式和委托思想,合并的想法,您可以看到。
EasyExcel的GitHub地址是:https://github.com/alibaba/easyexcel
2.3.1。数据量很小(在20W之内):一次查询导出
2.3.2。数据量中等(在100W之内):批次查询导出
2.3.3。
2.4.0.Excel常数类
注意:为了写方便,必须在此处划分两者,这可以节省很多不必要的判断。此外,如果您自己进行测试,则可以更改为100,20。
2.4.1。数据量很小(在20W之内):一次查询导出
2.4.2。数据量中等(在100W之内):批次查询导出
2.4.3。
假数据,100W记录,18个字段,测试导出为70。实际上使用了生产环境时,细节取决于您编写的SQL的性能。如果SQL的性能很快,则将很快。
有一个建议:进行分页时,请使用单一的查询。对于与您需要处理的外部密钥相对应的冗余字段,您可以一次在地图中找到它(推荐@mapkey),然后根据外部键在listGet列表中浏览列表中的相应名称。
一个目的:更少的查询SQL以更快的速度导出。
外部:如果数据量太大,则使用查询总数时会非常慢。您可以通过调整MySQL缓冲池参数来加快查询的速度。
还有一个问题。当使用PageHelper时,当数据量大时,查询有时会很快,有时会很慢。
链接:blog.csdn.net/qq_35206261/article/details/88579151