CTE绝对是Postgresql中的一个优化范围……但这是标准所要求的,还是实际上只是实现细节?
例如,这些邮件列表帖子声称或建议它是标准的:
> http://www.digipedia.pl/usenet/thread/11566/101385/
在提到它in a comment之后,我被问到它的指定位置 – 并且看了一下sql的唯一草案:2008我可以访问我找不到运气.
我还没有深入研究这个标准,所以我希望得到一个人的建议:Postgresql中CTE的优化防护实际上是否需要标准?如果是这样,它指定的位置是什么?或者Pg邮件列表上的陈述是错误的?
A conforming implementation is not required to perform the exact
sequence of actions defined in the General Rules,provided its effect
on sql-data and schemas,on host parameters and host variable,and on
sql parameters and sql variables is identical to the effect of that
sequence. The term effectively is used to emphasize actions whose
effect might be achieved in other ways by an implementation.1
我认为实现者可以20次评估公共表表达式,即使是以20种不同的方式,并且仍然具有一致的实现.唯一相关的问题是“其效果……是否与一般规则中定义的一系列行动的效果相同”.
[1].第6.3.3.3节“规则评估顺序”,在sql 2008标准的草案中,具有本地文件名5CD2-01-Framework-2006-01.pdf,p. 41我不知道我从哪里得到它.谷歌可能知道.