java - Java Hashmap<Integer, Integer> 和 mysql 临时表哪个更有效?

标签 java mysql spring hibernate hashmap

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

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

每条评论都有多个版本。有 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/

相关文章:

java - 如何将请求从 servlet 重定向到 https

mysql - 重装mysql后找不到PID文件

mysql - 如何通过 mysqldump 正确转储 mysql 数据库?

mysql - 按最高和最低排序

java - Spring + hibernate + quartz : Dynamic Job

java - 使用 Logback 屏蔽密码?

java - android 日历时区不起作用?

java - 在 netbeans 中构建后,Jar 文件无法正常运行

java - 层次树角色的 Spring Security/Java EE 解决方案

java - 尝试使用 Maven 构建第一个 Spring 项目