最近项目中有一个需求:根据查询条件导出(mysql)单表数据(几千万条数据量级的导出)。而查询条件各种各样,无法在表上对所有的查询项创建索引。
项目开发人员在我的指导下,经过多次测试,最终得到一个相对最优的一个解决方案。
第一次的写法:使用select * from table where 的方式导出符合条件的所有数据。
第二次的写法:增加分页查询,但是查询出来的数据全部存入list里面。
第三次的写法:分页查询,但是直接写入execl,不存入list。
第四次的写法:分页查询,查询需要导出的字段。
第五次的写法:循环查询并传入上一次最大记录的ID值。(ID列主键自增列)