Veo referencias frecuentes a WITH
consultas (expresiones de tabla comunes o CTE) que actúan como una valla de optimización, donde el servidor no puede insertar filtros en las consultas de CTE, extraer expresiones comunes del CTE, etc. A menudo se afirma ser un comportamiento requerido por los estándares SQL.
Los CTE son definitivamente una valla de optimización en PostgreSQL ... ¿pero esto es requerido por el estándar, o en realidad solo por detalles de implementación?
Por ejemplo, estas publicaciones en la lista de correo afirman o sugieren que es estándar:
Después de mencionarlo en un comentario, me preguntaron dónde está especificado, y después de echar un vistazo al único borrador de SQL: 2008 al que tengo acceso, no tengo mucha suerte para encontrarlo.
Todavía no he estudiado el estándar de manera intensiva, por lo que espero una sugerencia de alguien que lo haya hecho: ¿El estándar requiere realmente el cerco de optimización de CTE en PostgreSQL? Y si es así, ¿dónde se especifica? ¿O las declaraciones en la lista de correo Pg son erróneas?
¿Ver también la cerca de optimización CTE de hilo en la lista de tareas pendientes? .
STABLE
oIMMUTABLE
funciona.