Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Inner Join und Where in() Klauselleistung?

Hängt von Ihrer SQL-Engine ab. Neuere SQL-Systeme, die über vernünftige Abfrageoptimierer verfügen, werden höchstwahrscheinlich beide Abfragen in denselben Plan umschreiben. Normalerweise wird eine Unterabfrage (Ihre zweite Abfrage) mithilfe eines Joins (der ersten Abfrage) umgeschrieben.

In einfachen SQL-Engines, die möglicherweise keine großartigen Abfrageoptimierer haben, sollte der Join schneller sein, da sie Unterabfragen in einer temporären In-Memory-Tabelle ausführen können, bevor die äußere Abfrage ausgeführt wird.

In einigen SQL-Engines mit begrenztem Speicherbedarf kann die Unterabfrage jedoch schneller sein, da keine Verknüpfung erforderlich ist – wodurch mehr Daten erzeugt werden.

Zusammenfassend kommt es also darauf an.