微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

批量读取数据库记录并排序

如何解决批量读取数据库记录并排序

我有一个包含多个表的数据库,其中包含数百万条记录(约 10 万条记录)。我的目标是处理数据(一些基本的 BODMAS 操作),然后将其批量写入 CSV 文件。为了优化内存,我想一次100K分批写入文件。 但是我希望在将这些记录写入文件时对其进行排序。有没有办法做到这一点? 应用程序代码在java中。

解决方法

我认为没有必要为这个查询分成多个批次

我怀疑(没有具体证据)MySQL 可以处理

 SELECT ... INTO OUTFILE '...'
     FROM ...
     ORDER BY ...

INTO OUTFILE 可能只是一个连续的操作。把它分成几块只会让它整体上需要更长的时间。

ORDER BY 将需要磁盘排序(除非您按 PRIMARY KEY 排序)。尽管这很昂贵,但只要有足够的磁盘空间,任何大小(甚至 100M 行)都是可行的。

此外,如果您要组合 CSV 文件并对其进行排序,则很可能需要更多时间。所以一次性完成。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。