我在Java工作.我要求我必须主要比较两个数据库查询.为此,我获取结果集的每一行并将其分配给HashTable,其字段名称为"key",字段中的数据为"value".然后,我将整个HashTables结果集分组为一个Vector,就像容器一样.所以基本上比较两个查询,我实际上正在迭代两个HashTables的向量.
我发现这种方法对我来说非常好,但需要大量的内存.由于其他设计要求,我必须通过类似Vector-HashTable的结构进行此比较,而不是某些DB端过程.
有没有人有任何优化建议?最佳解决方案将与我现在所做的有些类似,因为大多数代码都是围绕它设计的.
谢谢
ORDER BY为两个结果集指定相同的子句(基于"键").然后,您只需要在内存中同时拥有每个结果集中的一条记录.
例如,假设你的结果是res1和res2.
如果key字段res1小于key字段res2,res2则缺少一些记录; 迭代res1直到其key字段等于或大于更大key的res2.
同样,如果key字段res1大于key字段res2,res1则缺少一些记录; 迭代res2来代替.
如果key当前记录的字段相等,则可以比较它们的值,然后迭代两个结果集.
通过这种方式,您可以看到每个结果中只需要一个记录在给定时间内保存在内存中.