Excel导出中部分数据重复&部分数据丢失问题的排查

107 阅读1分钟

项目中某个导出功能的结果数据出现了重复数据,而数据总条数是正确的。

经过分析代码发现,导出功能为了防止内存溢出,采用了分页查询写入Excel的方式,而查询sql中的排序字段假设为分数。当数据中出现分数相同的数据,且记录位置刚好卡在前后2页上时有概率出现数据重复,如分页条数为10条,第10条和第11条数据如下:

排序分数姓名
1088张三
1188王五

这样有可能查第1页的时候的最后一条数据为张三,查第2页时的第1条数据也是张三,导致最终的导出结果中张三出现了重复而王五数据丢失了。

这里为了保证排序结果稳定,在分页查询数据时,最好有唯一值(如这里加入学号)参与排序来确保排序结果的稳定性。