![]() |
1
4
如果您的数据库支持合并,我会认为这是最有效的(并将所有数据视为单个数据集)。 见: http://www.oracle.com/technology/products/oracle9i/daily/Aug24.html https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=194 |
![]() |
2
1
如果性能是你的目标,那么首先从你的词汇表中去掉iterate这个词!学会成套做事。 如果需要更新或插入,请始终先进行更新。否则,您很容易发现自己正在更新意外插入的记录。如果您正在这样做,那么有一个标识符可以帮助您查看记录是否存在。如果标识符存在,则执行更新,否则执行插入。 |
![]() |
3
1
重要的是要了解插入的数量与您收到的列表更新的数量之间的平衡或比率。IMHO应该实现一个抽象的策略,上面写着“在数据库上持久化这个”。然后制定具体的战略(例如):
然后从配置文件中提取要使用的策略(例如类完全限定名)。这样,您可以轻松地从一种策略切换到另一种策略。如果可行,可能取决于您的领域,您可以根据集合上的输入实体选择最佳策略。 |
![]() |
4
1
|
![]() |
5
1
方案2不会是最有效的。当您执行实际插入或更新以强制执行主键时,数据库将已经为您执行此检查。通过自己进行此检查,您将产生两倍的表查找开销以及额外的Java代码往返。选择最有可能的情况,并乐观地编码。 展开选项1,可以使用存储过程来处理插入/更新。本例使用PostgreSQL语法,假设插入是正常情况。
您还可以将更新设置为正常情况,然后检查受update语句影响的行数,以确定该行是否确实是新的,并且您需要执行插入。
|