LEFT OUTER JOIN vs. NOT EXISTS: Leistungsüberlegungen
Beim Vergleichen von Daten zwischen zwei Tabellen werden Elemente ausgewählt, die in einer, aber nicht vorhanden sind other kann entweder durch einen LEFT OUTER JOIN oder eine NOT EXISTS-Unterabfrage erreicht werden. Während einige spekulieren, dass ANSI-kompatible JOINs, wie z. B. LEFT OUTER JOINs, auf SQL Server eine bessere Leistung erbringen, hängt die tatsächliche Leistung von verschiedenen Faktoren ab.
Im Allgemeinen, wenn die beteiligten Felder über geeignete Indizes verfügen und Sie mit einem Herausfiltern rechnen Bei einem erheblichen Teil der Daten bietet NOT EXISTS tendenziell eine bessere Leistung. Dies liegt daran, dass NOT EXISTS wie EXISTS Kurzschlüsse nutzt: Sobald eine Übereinstimmung für einen Datensatz gefunden wird, wird dieser entweder eingeschlossen oder ausgeschlossen, und der Optimierer fährt mit dem nächsten Datensatz fort.
Im Gegensatz dazu LEFT JOINs rufen alle Datensätze ab, unabhängig davon, ob sie übereinstimmen, und filtern anschließend nicht übereinstimmende Datensätze heraus. Dies kann ressourcenintensiv sein, wenn die Tabellen groß sind oder mehrere Join-Kriterien angegeben werden.
Folglich werden NOT EXISTS und EXISTS nach Möglichkeit im Allgemeinen bevorzugt. Speziell für SQL Server sind die Operatoren IN und NOT IN, die semantisch äquivalent zu NOT EXISTS sind, möglicherweise bequemer zu schreiben und bieten einen garantierten Kurzschluss.
Das obige ist der detaillierte Inhalt vonLEFT OUTER JOIN vs. NOT EXISTS: Was schneidet in SQL Server besser ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!