0

我有一个这样的查询:

SELECT a, very_costly_function(b), another_fn(very_costly_function(b)) from X

您会注意到very_costly_function(b) 被使用了两次,因此如果可以设置一个像这样的变量会很好:

SET FOR EACH ROW: Z = very_costly_function(b)
SELECT a, Z, another_fn(Z) from X
4

2 回答 2

1
SELECT a, fn_b, another_fn(fn_b) AS a_fn_b
  FROM (SELECT a, very_costly_function(b) AS fn_b
          FROM x)

这将为您节省开销。将值放入变量并再次使用它对于编译器来说会变得有点麻烦,很多时候你不能在前端或其他更高层的程序中直接使用这样的查询。如果一个查询可以完成这项工作,请使用它!

于 2013-03-19T12:07:00.843 回答
1

将 a 和very_costly_function(b) 插入到临时表中。然后从临时表中选择a、函数结果和另一个函数(函数结果)。

于 2013-03-19T12:01:25.823 回答