千万級のデータはexcelの少しの心得を書き出します



最近プロジェクトをして、MYSQLデータベースを使って、千万級のデータをEXCELでエクスポートするように要求して、長い間試して、いくつかの方法を見つけました.
1.バッチ読み取り、LIMITで、このデータ量が小さいときはまあまあ、データ量が大きいとその場でバカになる
2.ストリーミング方式の読み取りを使用して、3分を費やして、速度は更に最適化することができて、メモリを占有するのが大きすぎて、1000 Wデータは3 Gの運存を占めて、キーワードは 
resultSetType="FORWARD_ONLY" fetchSize="-2147483648"

しかし、これではボスは私に迷惑をかけなければなりません.しかし、百万ぐらいのデータはこれを使って、スピードが速いですね.
3.両者を組み合わせてmybatisでストリーミング読み取りをオンにし、バッチ読み取りを有効にすると、データ量が大きいときにバッチ読み取りも遅くなりません.バッチデータを読み取り、バッチデータを処理して空にし、次のセグメントを読み取ると、10分ほどかかり、256 Mメモリも正常に動作し、easyexcelに合わせます.
 
ExcelWriter excelWriter = null;
            try {
                ServletOutputStream outputStream = response.getOutputStream();
                excelWriter = EasyExcelFactory.write(outputStream, Device.class).build();
                int j = (int) Math.ceil(i / 500000.0) + 1;
                for (int k = 1; k < j; k++) {
                    List devices = deviceMapper.selectDevicenub(id, (k - 1) * 500000, 500000);
                    WriteSheet writeSheet = EasyExcel.writerSheet(k, "    " + k).build();
                    excelWriter.write(devices, writeSheet);
                    devices=null;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            excelWriter.finish();

集合を必ずクリアしてください