我在Java中有一个生产者线程,每隔n毫秒从Oracle表中提取项目。 当前实现依赖于Java时间戳来检索数据,而不再重新检索它们。
我的目标是摆脱时间戳模式并直接更新我从数据库中提取的相同项目。
有没有办法选择一组项目并同时更新它们以将它们标记为“正在处理”?
如果没有,依赖于IN子句的单独UPDATE查询是否会成为主要的性能影响? 为此尝试使用临时表,但我发现性能受到严重影响。
不知道它是否有帮助,但应用程序正在使用iBatis。
答案 0 :(得分:5)
如果您使用的是oracle 10g或更高版本,则可以使用update语句的RETURNING子句。如果您希望检索多行,则可以使用BULK COLLECT语句 这是一些例子的链接; http://psoug.org/snippet/UPDATE-with-RETURNING-clause_604.htm