百万数据Excel导出功能如何实现?( 四 )

编号
商品名称
仓库名称
价格
1
笔记本
北京仓
7234
1
笔记本
上海仓
7235
1
笔记本
武汉仓
7236
2
平板电脑
成都仓
7236
2
平板电脑
大连仓
3339
但我们做了分页查询的功能,没法将数据一次性查询出来,直接在Java内存中分组或者排序 。
因此,我们需要考虑在sql语句中使用order by 商品编号,先把数据排好顺序,再查询出数据,这样就能将相同商品编号,仓库不同的数据放到一起 。
此外,还有一种情况需要考虑一下,通过配置的总记录数将全部数据做了截取 。
但如果最后一个商品编号在最后一页中没有查询完,可能会导致导出的最后一个商品的数据不完整 。
因此,我们需要在程序中处理一下,将最后一个商品删除 。
但加了order by关键字进行排序之后,如果查询sql中join了很多张表,可能会导致查询性能变差 。
那么,该怎么办呢?
总结最后用两张图,总结一下excel异步导数据的流程 。
如果是使用mq导数据:

百万数据Excel导出功能如何实现?

文章插图
如果是使用job导数据:
百万数据Excel导出功能如何实现?

文章插图
这两种方式都可以,可以根据实际情况选择使用 。
我们按照这套方案的开发了代码,发到了pre环境,原本以为会非常顺利,但后面却还是出现了性能问题 。
后来,我们用了两招轻松解决了性能问题 。




推荐阅读