Wenn es um performante SQL-Abfragen geht, sorgt kaum ein Thema für so viele Diskussionen wie der Einsatz von Unterabfragen mit (NOT) IN oder (NOT) EXISTS. Die Meinungen in der Entwickler-Community sind vielfältig: Während manche auf eine einzige Technik schwören, setzen andere auf Best Practices – und wieder andere lehnen Unterabfragen grundsätzlich ab und ersetzen sie durch Joins. Doch wie berechtigt sind diese Ansätze heute noch? 

Mit jeder neuen Oracle-Version wird der Optimizer intelligenter – und viele alte Regeln verlieren an Bedeutung. Zeit also, einige Mythen auf den Prüfstand zu stellen. 

Der Vortrag zeigt anhand konkreter Beispiele die Unterschiede zwischen Subqueries, Semi- und Anti-Joins sowie klassischen Joins und erläutert, welche Query-Transformationen – wie z. B. Subquery Unnesting oder Partial Join Evaluation – der Optimizer anwendet, um unabhängig von der verwendeten SQL-Form das bestmögliche Ergebnis zu erzielen.