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.