2

我正在将数据从一个数据库迁移到另一个数据库。

我正在迁移的数据是产品版本的评论。

每个评论都有很多版本。有 23K 不同的评论,60k 版本有评论意味着大约每 3 个版本共享一个评论。

在我的 Java 应用程序中,主机数据库包含具有与评论数据库上的评论相关联的 reviewId 的版本。

我有一个Hashmap<Integer, Integer>,每次我从评论数据库中导入评论时,我都会使用map.put(reviewId, hostId).

在我从评论数据库导入之前,我检查它是否在哈希图中,如果它是我使用已经导入的评论。一段时间后这开始变得非常慢,我想知道使用临时表是否更有效。或者,如果有另一种更有效的方法。

这是代码: https ://gist.github.com/4064373

想法、建议?

4

1 回答 1

2

MySQL 临时表在最好的情况下也将实现为哈希映射。但与 Java 哈希映射相比,实现将准备处理更多的列。而且你有与 MySQL 通信的开销。因此,要回答您问题的标题,如果您从应用程序访问数据,我希望 Java HashMap 会更有效。对于 SQL 服务器内的数据关联,情况有所不同。

但正如 Jon Skeet在他的评论中指出的那样,从整数到整数的简单哈希映射对于您所描述的那种应用程序来说不应该是严重的性能瓶颈。所以很有可能其他东西是以次优的方式编写的。乍一看,我没有看到任何明显的问题,但是,您调用的方法有很多,从理论上讲,其中任何一个都可能是罪魁祸首。

于 2012-11-13T09:28:46.883 回答