【发布时间】:2013-08-07 18:34:48
【问题描述】:
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;
我认为第二个更快,因为它似乎需要少一次访问数据库。这是真的吗?
【问题讨论】:
-
这是个有趣的话题。我会说它更快。需要编写一个小程序来测试它。但是返回有用的地方是删除。因为你不能删除-选择。但是你可以删除-返回。
-
这些替代方案在技术上并不等同。第一个可能会引发 TOO_MANY_ROWS(除非
a具有唯一约束),而第二个不会。即使a是唯一标识符,第一个可能会引发 NO_DATA_FOUND 而第二个不会。