postgresql – SQL:2008标准中指定的CTE(WITH查询)的优化范围行
我看到频繁引用WITH查询(公用表表达式或CTE)充当优化围栏,其中服务器不允许将过滤器下推到CTE查询中,将常见表达式拉出CTE,等等.声称是SQL标准所要求的行为.
CTE绝对是PostgreSQL中的一个优化范围……但这是标准所要求的,还是实际上只是实现细节? 例如,这些邮件列表帖子声称或建议它是标准的: > http://www.digipedia.pl/usenet/thread/11566/101385/ 在提到它in a comment之后,我被问到它的指定位置 – 并且看了一下SQL的唯一草案:2008我可以访问我找不到运气. 我还没有深入研究这个标准,所以我希望得到一个人的建议:PostgreSQL中CTE的优化防护实际上是否需要标准?如果是这样,它指定的位置是什么?或者Pg邮件列表上的陈述是错误的? 另见线程CTE optimization fence on the todo list?.
我认为这是一个实现细节.
我认为实现者可以20次评估公共表表达式,即使是以20种不同的方式,并且仍然具有一致的实现.唯一相关的问题是“其效果……是否与一般规则中定义的一系列行动的效果相同”. [1].第6.3.3.3节“规则评估顺序”,在SQL 2008标准的草案中,具有本地文件名5CD2-01-Framework-2006-01.pdf,p. 41我不知道我从哪里得到它.谷歌可能知道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |