我希望将结果集(约1.5百万行)中的“随机”输出以排序方式存入文件。我知道可以在查询中使用sort by命令,但该命令很“昂贵”。请问是否有算法可以将结果集行写入文件,以便最终内容排序,并且我能从中获得更好的性能?我正在使用Java 1.6,查询具有多个连接。
如果你从数据库中读取数据,如果你有适当的索引,获取排序输出不应该是那么“昂贵”的。
但是,有时候对于复杂的查询,SQL优化器很难应用索引。在这种情况下,数据库会简单地将结果累积到一个临时表中,并为您透明地进行排序。
很少有可能你能够匹配到你的数据库引擎所做的优化水平;但是,如果你的问题是因为你正在对数据进行一些后处理,使得数据库所做的任何排序都被抵消了,那么你别无选择,只能自己进行排序。
同样,最简单的方法是使用数据库:只需编写一个带有适当索引的临时表并从其中转储即可。
如果你确定数据总是适合内存,你可以在内存中对其进行排序。这是唯一一种情况,你可能能够击败数据库引擎,因为你知道你不需要访问硬盘。
但这有很多“如果”。最好还是使用你的数据库。