Vor einiger Zeit veröffentlichte Brent Ozar einen Beitrag, in dem einige der Unterschiede zwischen SQL Server und PostgreSQL beschrieben wurden:
Zwei wichtige Unterschiede zwischen SQL Server und PostgreSQL
Der erste Punkt („CTEs sind Optimierungszäune“) ist mir aufgefallen, da es offensichtlich ist, dass SQL Server im bereitgestellten Beispiel den CTE und die Hauptabfrage miteinander kombiniert und als einzelne Abfrage optimiert (im Gegensatz zum entgegengesetzten Verhalten in PostgreSQL).
Dieses Verhalten scheint jedoch den Beispielen zu widersprechen, die ich in anderen Blogs und Schulungsklassen gesehen habe, in denen SQL Server den CTE als Optimierungszaun behandelt, der eine bessere Verwendung von Indizes, eine bessere Leistung usw. ermöglicht. Zum Beispiel:
Ein besserer Weg, um Stern auszuwählen
Es scheint also, als würde SQL Server den CTE manchmal als Optimierungszaun „ehren“. Gibt es gute Ressourcen, die die spezifische Liste bekannter Fälle dokumentieren, in denen SQL Server den CTE zuverlässig als Optimierungszaun (oder das entgegengesetzte Verhalten) anerkennt?
quelle