0

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

Identifier NumberValue

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

4

3 回答 3

1

所以基本上你问的是检查整个数据库的内存映射是否会更快,以便潜在地节省查找是否存在的事务成本,如果不存在,执行插入数据库?

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

  • 它是具有快速访问权限的本地设备,还是通过慢速线路在海外远程访问的设备。
  • 您是否在内存使用量真的不是问题的大型机器上运行(否则您最终会交换)。
  • 数据库是否有索引和主键可以快速搜索和拒绝重复的条目?
  • 这些是在一台服务器上运行还是每台服务器都需要更新保存到数据库的内容以保持内存缓存中的并发?

一般来说,内存中的映射会使事情工作得更快。但我相信其他人可以指出,您必须处理很多问题和例外情况。一次读取一百万行可能比一次读取一百万行更快,以检查该特定标识符是否存在,但同样,它实际上取决于数量、资源和可用时间之间的平衡。

不回答怎么办...

于 2013-09-17T19:36:07.467 回答
1

我会得到值,添加一百行,然后NumberValue在单个事务中添加一百行。

于 2013-09-17T15:49:52.993 回答
1

如果它不是主键,您可以将索引添加到您正在搜索的列,方法是使用

@Table(indexes = { @Index( columnList = ".." ) })
于 2013-09-17T16:00:27.763 回答