apache / apache/datafusion

Additional ideas for optimizing subqueries

Aperta
#5,484 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Rust
Stelle
9.3k
Fork
2.4k
Merge medio
3g 11h
PR unite (30g)
360

Descrizione

Originally from @jon-chuang on https://github.com/apache/arrow-datafusion/issues/2248#issuecomment-1120280963, copied to new ticket so it didn't get lost:

Some additional ideas for subquery optimizations:
- If rest of subquery is not correlated, push up correlated filter (in particular, correlated equality filter) into a left join on the filter.
- More here: https://www.alibabacloud.com/blog/query-optimization-technology-for-correlated-subqueries_597644

More generally, one can attempt this approach, which is a lot less messy than relying on countless rewriting heuristics (which is also highly error-prone):
- [Unnesting arbitrary queries](https://cs.emis.de/LNI/Proceedings/Proceedings241/383.pdf)
- Implementation in DuckDB here: https://github.com/duckdb/duckdb/blob/bee8017bdcc5e652aee26ce8cfb260990cf6a369/src/planner/subquery/flatten_dependent_join.cpp#L72

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Non è stato indicato alcun file o test di DataFusion. Inizia esaminando la gestione esistente delle subquery correlate, il paper collegato sull’unnesting e src/planner/subquery/flatten_dependent_join.cpp di DuckDB; definisci innanzitutto un’ottimizzazione circoscritta. Il lavoro è completato quando l’optimizer implementa la trasformazione in modo sicuro e test mirati del planner dimostrano i piani di query attesi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust, sql
Ambito
databases, performance
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
20/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.