Hace un tiempo, Brent Ozar publicó una publicación que detalla algunas de las diferencias entre SQL Server y PostgreSQL:
Dos diferencias importantes entre SQL Server y PostgreSQL
El primer punto ("CTE son vallas de optimización") me llamó la atención, porque es obvio que en el ejemplo proporcionado, SQL Server combina el CTE y la consulta principal y lo optimiza como una consulta única (a diferencia del comportamiento opuesto en PostgreSQL).
Sin embargo, este comportamiento parece contrario a los ejemplos que he visto en otros blogs y clases de capacitación, donde SQL Server trata el CTE como una valla de optimización, que permite un mejor uso de los índices, un mejor rendimiento, etc. Por ejemplo:
Una mejor manera de seleccionar estrella
Por lo tanto, parece que SQL Server "honra" al CTE como un cerco de optimización A VECES. ¿Hay algún buen recurso disponible que documente la lista específica de casos conocidos en los que SQL Server honrará de manera confiable al CTE como una valla de optimización (o el comportamiento opuesto)?
fuente