postgresql – SQL:2008标准中指定的CTE(WITH查询)的优化范围行为?如果是这样,在哪里?

前端之家收集整理的这篇文章主要介绍了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?.

我认为这是一个实现细节.

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我不知道我从哪里得到它.谷歌可能知道.

猜你在找的Postgre SQL相关文章