我正在将数据从一个数据库迁移到另一个数据库。
我要迁移的数据是对产品版本的评论。
每次审核都有很多版本。有23K个不同的评论,60k版本的评论意味着大约每3个版本共享一个评论。
在我的Java应用程序中,主机数据库包含具有与审阅db上的审阅相关联的reviewId的版本。
我有Hashmap<Integer, Integer>
,每次从评论数据库导入评论时,我都会使用map.put(reviewId, hostId)
将其添加到地图中。
在我从评论数据库导入之前,我检查它是否在hashmap中是否使用已经导入的评论。一段时间后,这开始变得非常缓慢,我想知道是否使用临时表更有效。或者,如果有其他方式更有效。
这是代码: https://gist.github.com/4064373
思考,建议?
答案 0 :(得分:2)
在最好的情况下,MySQL临时表也将实现为哈希映射。但与Java哈希映射相比,实现将准备处理更多列。而且你有与MySQL通信的开销。因此,要回答问题的标题,如果您从应用程序访问数据,我希望Java HashMap更有效。对于SQL服务器中数据的关联,情况就不同了。
但是,正如Jon Skeet所指出的in his comment,从整数到整数的简单哈希映射不应该是您所描述的应用程序类型的严重性能瓶颈。所以很有可能其他东西是以次优的方式编写的。乍看之下我没有看到任何明显的问题,但是,你可以调用很多方法,理论上,任何一种方法都可能是罪魁祸首。