3

1)

update foo set bar = bar + 1 where a = 123;
select bar into var from foo where a = 123;

2)

update foo set bar = bar + 1 where a = 123 RETURNING bar into var;

我认为第二个更快,因为它似乎需要少一次访问数据库。这是真的?

4

1 回答 1

6

正如我所预料的那样:

通常,应用程序需要有关受 SQL 操作影响的行的信息,例如,生成报告或采取后续操作。INSERT、UPDATE 和 DELETE 语句可以包含 RETURNING 子句,它将受影响行中的列值返回到 PL/SQL 变量或主变量中。这消除了在插入或更新之后或删除之前选择行的需要。因此,需要更少的网络往返、更少的服务器 CPU 时间、更少的游标和更少的服务器内存。

取自这里的 Oracle 文档

于 2013-08-07T18:59:18.060 回答