Java 通过JdbcBatchItemWriter基于主键插入/更新。在这种情况下,oracle merge会有任何性能问题吗?
我需要根据记录是否已经存在来插入或更新记录 我正在使用JdbcBatchItemWriter编写记录。但是如果带有主键的记录已经存在,我应该更新它 因此,一个解决方案是: 要创建两个单独的列表,一个用于插入,一个用于更新(注意:每次我必须在处理器中检查记录是否已存在,从而将记录添加到列表中的一个),并且在我的writer中有两个不同的JdbcBatchItemWriter实例,例如:Java 通过JdbcBatchItemWriter基于主键插入/更新。在这种情况下,oracle merge会有任何性能问题吗?,java,database,spring-batch,batch-updates,Java,Database,Spring Batch,Batch Updates,我需要根据记录是否已经存在来插入或更新记录 我正在使用JdbcBatchItemWriter编写记录。但是如果带有主键的记录已经存在,我应该更新它 因此,一个解决方案是: 要创建两个单独的列表,一个用于插入,一个用于更新(注意:每次我必须在处理器中检查记录是否已存在,从而将记录添加到列表中的一个),并且在我的writer中有两个不同的JdbcBatchItemWriter实例,例如: JdbcBatchItemWriter<insertList> insertWriter; Jdbc
JdbcBatchItemWriter<insertList> insertWriter;
JdbcBatchItemWriter<updateList> updateWriter;
JdbcBatchItemWriter-insertWriter;
JdbcBatchItemWriter updateWriter;
根据批量更新时已存在的记录,是否有其他方法在writer中的查询之间切换…即。
就一个
JdbcBatchItemWriter<mylist> allWriter...and
allWriter.write(mylistallitems);
JdbcBatchItemWriter allWriter…和
allWriter.write(mylistallitems);
我正在考虑使用合并查询……但是否存在性能问题?有两个不同的列表可能是更好的选择,因为如果将来有不同的持久化机制,则无需重新设计应用程序。您可能希望使用单个查询从DB获取所有现有主键,将其存储在集合持有者中,并在处理器中引用它 对“Oracle Merge Performance”等进行简短搜索,可以发现由于不同的因素而导致的多个性能问题实例&可能比精心编制的insert/update SQL慢
此外,如果您再次收到完整的数据(对于更新),您可能需要考虑截断插入方法[通过添加监听器删除之前插入] < /p>可能的感谢的副本,进一步我正在考虑使用Oracle合并来进行此操作,您能告诉我使用oracle merge是否会出现性能问题吗