Maxim Mironjuk
-
Mai 09, 2025
Eine einzelne Common Table Expression macht eine Abfrage schon deutlich lesbarer als eine tief verschachtelte Subquery, aber der eigentliche Mehrwert zeigt sich erst, wenn mehrere CTEs nacheinander aufeinander aufbauen und eine komplexe Auswertung in klar benannte, nachvollziehbare Zwischenschritte zerlegen. Diese Lesbarkeit hat allerdings ihren Preis, denn nicht jede Datenbank behandelt eine Kette aus CTEs technisch gleich: Manche materialisieren jede CTE als eigenständiges Zwischenergebnis, andere binden sie transparent in die umgebende Abfrage ein. Dieser Artikel zeigt, wie sich mehrstufige CTE-Ketten sinnvoll strukturieren lassen, wie sich das Materialisierungsverhalten zwischen PostgreSQL vor und nach Version 12 sowie anderen Datenbanken unterscheidet, und ab welchem Punkt eine CTE-Kette in der Praxis zum echten Performance-Problem wird.