How DuckDB is USING KEY to Unlock Recursive Query Performance

Paper How DuckDB is USING KEY to Unlock Recursive Query Performance (PDF)
Konferenz SIGMOD 2025

Zusammenfassung

Die rekursiven Common Table Expressions (CTEs) von SQL können komplexe Berechnungen über tabellarische Daten ausdrücken. Ihre akkumulierende Semantik – die alle Zwischenergebnisse in einer Union-Tabelle sammelt – kann jedoch erheblichen Speicher- und Laufzeitaufwand verursachen. Dieser Beitrag nimmt die kürzlich vorgeschlagene Variante USING KEY rekursiver CTEs zum Ausgangspunkt und zeigt sie als produktionsreife Funktion in DuckDB. Diese CTE-Variante erlaubt Anfragen, frühere Zwischenergebnisse selektiv zu „überschreiben“, was letztlich zu deutlich kleineren Union-Tabellen und Laufzeitersparnis führt. Wir stellen die Änderungen vor, die wir in DuckDB vorgenommen haben, um diese neue CTE-Form zu unterstützen, und zeigen die Leistung der Variante USING KEY anhand der LDBC-Graphinstanzen. Die Demonstration umfasst eine voll funktionsfähige Implementierung von USING KEY in einer DuckDB-Instanz, vorausgeladen mit LDBC-Graphen, sowie eine große Menge an Anfragen, die den Nutzen belegen. Die Demonstration ist interaktiv: Besuchende können mit Beispiel-SQL-Anfragen und Daten experimentieren.

Implementierung

USING KEY ist in DuckDB v1.3.0 im Hauptzweig umgesetzt. Details zur Nutzung finden Sie in der Dokumentation und im Ankündigungs-Blogbeitrag.