Heim > Datenbank > MySQL-Tutorial > Wann übertrifft ein LEFT JOIN einen INNER JOIN?

Wann übertrifft ein LEFT JOIN einen INNER JOIN?

Susan Sarandon
Freigeben: 2025-01-18 16:42:12
Original
875 Leute haben es durchsucht

When Does a LEFT JOIN Outperform an INNER JOIN?

LEFT JOIN vs. INNER JOIN: Ein Leistungsparadoxon

Es wird allgemein angenommen, dass INNER JOIN-Vorgänge effizienter sind als LEFT JOIN in SQL Server. Die Leistung kann jedoch überraschend kontraintuitiv sein. In diesem Artikel wird ein Szenario untersucht, in dem ein LEFT JOIN einen INNER JOIN.

deutlich übertraf

Die Fallstudie:

Eine komplexe Abfrage mit neun Tabellen, die zunächst INNER JOIN verwendete, zeigte eine schlechte Leistung. Der Wechsel zu LEFT JOIN hat die Ausführungsgeschwindigkeit erheblich verbessert.

Warum der unerwartete Geschwindigkeitsschub?

Es gilt die gängige Meinung: LEFT JOIN ist im Allgemeinen nicht schneller. Es umfasst die gleiche INNER JOIN-Verarbeitung sowie den zusätzlichen Schritt des Hinzufügens von Nullwerten für nicht übereinstimmende Zeilen aus der linken Tabelle. Die größere Ergebnismenge kann auch die Geschwindigkeit verlangsamen.

Der Schlüssel zum Verständnis des beobachteten Leistungsunterschieds liegt im Fehlen von Primär- und Fremdschlüsselindizes für die beteiligten Tabellen. Dieser Mangel an Indexierung beeinträchtigte die Effizienz des INNER JOIN erheblich.

Situationen, in denen LEFT JOIN gewinnen könnte:

Obwohl dies nicht die Norm ist, gibt es bestimmte Bedingungen, unter denen ein LEFT JOIN einen INNER JOIN übertreffen könnte:

  1. Winzige Tabellen: Bei extrem kleinen Tabellen (unter zehn Zeilen) kann der Overhead von Hash-basierten INNER JOIN-Operationen den Overhead der verschachtelten Schleifen überwiegen, die typischerweise in LEFT JOIN Ausführungsplänen verwendet werden.

  2. Unzureichende Indizierung: Wenn Indizes fehlen oder für INNER JOIN nicht ausreichen, wählt SQL Server möglicherweise einen weniger effizienten Ausführungsplan. Eine LEFT JOINNutzung verschachtelter Schleifen könnte dann eine bessere Leistung bieten.

Zusammenfassung:

Obwohl LEFT JOIN von Natur aus mehr Verarbeitung erfordert als INNER JOIN, können Situationen mit kleinen Tabellen oder einem Mangel an ordnungsgemäßer Indizierung zu unerwarteten Leistungsvorteilen für LEFT JOIN führen. Das Fehlen geeigneter Indizes war wahrscheinlich die Ursache in der oben beschriebenen Fallstudie.

Das obige ist der detaillierte Inhalt vonWann übertrifft ein LEFT JOIN einen INNER JOIN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage