我看到对WITH
查询(公用表表达式或CTE)的频繁引用充当了优化隔离,不允许服务器将过滤器下推到CTE查询中,将常用表达式从CTE中拉出,等等。成为SQL标准要求的行为。
CTE 绝对是PostgreSQL中的优化栅栏……但这是标准要求的,还是实际上只是实现细节?
例如,这些邮件列表张贴声明或表明它是标准的:
在评论中提到它之后,我被问到了它的指定位置-在查看了SQL:2008的唯一草稿后,我获得了访问它的机会,但运气并不好。
我尚未深入研究该标准,因此希望有人提出以下建议:标准实际上需要PostgreSQL中CTE的优化范围吗?如果是这样,它在哪里指定?还是Pg邮件列表上的语句有误?
STABLE
或IMMUTABLE
函数的CTE 。