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