Java对象而不是在数据库中查找

时间:2013-09-17 15:45:26

标签: java map lookup records

我需要从许多文件中插入许多行,例如:

Identifier NumberValue

对于我在looing的每一行,如果已经存在于带有Identifier的数据库行中,如果存在,我将获取其NumberValue并从到达行添加NumberValue并更新数据库。 我发现在数据库中查找每一行(总共几百万条记录)需要花费很多时间。 在此地图中插入数据库之前创建地图并查看是否有意义? 感谢。

3 个答案:

答案 0 :(得分:1)

我会得到值,添加一百行,并在一次交易中为NumberValue添加一百。

答案 1 :(得分:1)

如果使用

,则可以将索引添加到要搜索的列中(如果它不是主键)
@Table(indexes = { @Index( columnList = ".." ) })

答案 2 :(得分:1)

所以基本上你要问的是检查整个数据库的内存映射是否会更快,以便在存在某些内容的情况下节省查找的事务成本,如果没有,则执行插入数据库的操作?

答案当然是“也许”。尽管您不想听到,但它实际上取决于您未向我们解释的数据库的详细信息。

  • 是一个快速访问的本地人,或者是通过慢线远程访问海外的东西。
  • 你是在一台大型机器上运行的,因为内存使用量确实不是问题(否则你最终会交换)。
  • 数据库是否具有可以快速搜索和拒绝条目(如果它们是重复项)的索引和主键?
  • 这些是在一台服务器上运行还是每台服务器都需要更新保存到数据库的内容以保持内存缓存的并发性?

通常,内存映射会使事情更快地运行。但正如我相信其他人可以指出的那样,你需要处理很多问题和例外。一次读取一百万行可能比一次读取一百万行更快,以便检查该特定标识符是否存在,但同样,它实际上取决于数量和资源与可用时间之间的平衡。

如何解决非答案......