我需要从许多文件中插入许多行,例如:
Identifier NumberValue
对于我正在寻找的每一行,如果数据库行中已经存在标识符,如果存在,我将获取它的 NumberValue 并从到达行添加 NumberValue 并更新数据库。我发现在数据库中查找每一行(总共几百万条记录)需要很多时间。在此地图中插入数据库之前创建地图并查看是否有意义?谢谢。
所以基本上你问的是检查整个数据库的内存映射是否会更快,以便潜在地节省查找是否存在的事务成本,如果不存在,执行插入数据库?
答案当然是“也许”。尽管您不想听到什么,但它确实将取决于您尚未向我们解释的数据库的详细信息。
一般来说,内存中的映射会使事情工作得更快。但我相信其他人可以指出,您必须处理很多问题和例外情况。一次读取一百万行可能比一次读取一百万行更快,以检查该特定标识符是否存在,但同样,它实际上取决于数量、资源和可用时间之间的平衡。
不回答怎么办...
我会得到值,添加一百行,然后NumberValue
在单个事务中添加一百行。
如果它不是主键,您可以将索引添加到您正在搜索的列,方法是使用
@Table(indexes = { @Index( columnList = ".." ) })