Il y a quelque temps, Brent Ozar a publié un article détaillant certaines des différences entre SQL Server et PostgreSQL:
Deux différences importantes entre SQL Server et PostgreSQL
Le premier point («les CTE sont des clôtures d'optimisation») a attiré mon attention, car il est évident que dans l'exemple fourni, SQL Server combine le CTE et la requête principale ensemble et l'optimise en une seule requête (par opposition au comportement opposé dans PostgreSQL).
Cependant, ce comportement semble contraire aux exemples que j'ai vus dans d'autres blogs et cours de formation, où SQL Server traite le CTE comme une clôture d'optimisation, ce qui permet une meilleure utilisation des index, de meilleures performances, etc. Par exemple:
Une meilleure façon de sélectionner une étoile
Il semble donc que SQL Server «honore» le CTE comme une barrière d'optimisation PARFOIS. Existe-t-il de bonnes ressources disponibles qui documentent la liste spécifique des cas connus où SQL Server honorera de manière fiable le CTE en tant que barrière d'optimisation (ou le comportement opposé)?
la source