您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

扩展复合结果时,避免在同一函数上多次调用

扩展复合结果时,避免在同一函数上多次调用

甚至不需要CTE。一个 也可以完成这项工作(已在9.3版中进行了测试):

SELECT i, (f).*                     -- decompose here
FROM  (
   SELECT i, (slow_func(i)) AS f    -- do not decompose here
   FROM   generate_series(1, 3) i
   ) sub;

确保不要在子查询中分解函数的复合结果。将其保留给 。 当然需要一个众所周知的类型。无法使用匿名记录。

或者说,什么@Richard写道一个 作品了。语法可以更简单:

SELECT * FROM generate_series(1, 3) i, slow_func(i) f

具有EXPLAIN VERBOSE所有变体的输出。如果发生该功能,您可以 看到 对该功能的多次评估。

其他 2022/1/1 18:53:13 有336人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶