MySQL-Optimierung: Join statt Unterabfrage verwenden

MySQL-Optimierung: Join statt Unterabfrage verwenden

Verwenden Sie JOIN anstelle von Unterabfragen

MySQL unterstützt SQL-Unterabfragen ab Version 4.1. Bei dieser Technik wird mithilfe einer SELECT-Anweisung ein einspaltiges Abfrageergebnis erstellt und dieses Ergebnis dann als Filterbedingung in einer anderen Abfrage verwendet. Wenn wir beispielsweise Kunden löschen möchten, für die in der Tabelle mit den grundlegenden Kundeninformationen keine Bestellungen vorliegen, können wir mithilfe einer Unterabfrage zunächst die Kunden-IDs aller Kunden abrufen, die Bestellungen aus der Tabelle mit den Verkaufsinformationen aufgegeben haben, und das Ergebnis dann an die Hauptabfrage übergeben, wie unten gezeigt:

LÖSCHEN AUS Kundeninfo 
WO Kunden-ID NICHT in (SELECT CustomerID FROM salesinfo ) 

Durch die Verwendung von Unterabfragen können viele SQL-Operationen, die logischerweise mehrere Schritte erfordern, gleichzeitig abgeschlossen werden. Gleichzeitig werden Transaktions- oder Tabellensperren vermieden und es ist außerdem einfach zu schreiben. In einigen Fällen kann eine Unterabfrage jedoch durch einen effizienteren JOIN ersetzt werden. Angenommen, wir möchten alle Benutzer abrufen, die keine Bestelldatensätze haben, können wir dies mit der folgenden Abfrage erledigen:

SELECT * FROM Kundeninfo 
WO Kunden-ID NICHT in (SELECT CustomerID FROM salesinfo ) 

Wenn Sie zum Abschließen dieser Abfrage einen JOIN verwenden, ist die Geschwindigkeit wesentlich höher. Insbesondere wenn in der Tabelle „salesinfo“ ein Index für CustomerID vorhanden ist, ist die Leistung besser. Die Abfrage lautet wie folgt:

SELECT * FROM Kundeninfo 
LINKS JOIN salesinfoON customerinfo.CustomerID=salesinfo. 
Kunden-ID 
Wobei salesinfo.CustomerID NULL ist 

JOIN.. ist effizienter, da MySQL keine temporäre Tabelle im Speicher erstellen muss, um diese logische zweistufige Abfrage abzuschließen.

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Optimierung mit Joins statt Unterabfragen. Er dient nur als Referenz. Etwaige Mängel bitte benennen. Alle sind herzlich eingeladen, sich auszutauschen und zu diskutieren. Vielen Dank, Freunde, für die Unterstützung dieser Site.

Das könnte Sie auch interessieren:
  • Tiefgreifendes Verständnis der MySQL-Selbstverbindung und Join-Assoziation
  • Analyse der Verwendung mehrerer MySQL-Left-Join-Abfragen
  • MySQL-Abfrageoptimierung: Einführung in das Sortierlimit für Join-Abfragen (Join-, Order-by- und Limit-Anweisung)
  • Detailliertes Tutorial zur Verwendung der JOIN-Anweisung zum Ausführen von Verbindungsvorgängen in MySQL
  • Wissenspunkte zum Prinzip der MySQL-Join-Abfrage
  • MySQL-Join-Abfragesyntax und Beispiele
  • Zusammenfassung mehrerer häufig verwendeter Verbindungsmethoden in MySQL

<<:  js canvas realisiert kreisförmige Wasseranimation

>>:  Detaillierte Erklärung des Unterschieds zwischen chown- und chmod-Befehlen in Linux

Artikel empfehlen

Detaillierte Erklärung, wo das von Docker abgerufene Image gespeichert ist

20200804Nachtrag: Der Artikel könnte falsch sein....

Beispielcode zur Implementierung eines Foto-Stacking-Effekts mit CSS

Ergebnisse erzielen Schritt 1. Ursprüngliche inde...

Vue3 realisiert den Bildlupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Tutorial zur Installation von MySQL 5.7.28 auf CentOS 6.2 (MySQL-Hinweise)

1. Umweltvorbereitung 1.MySQL-Installationspfad: ...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

Vor- und Nachteile von React Hooks

Inhaltsverzeichnis Vorwort Vorteil: Mangel: 1. Re...

Tutorial zur Bereitstellung und Installation von MySQL 8.0.18 unter Windows 7

1. Vorbereitende Schritte (Windows 7 + MySQL-8.0....

Beispiel für die Integration von Kafka mit Nginx

Hintergrund nginx-kafka-module ist ein Plug-In fü...

Beispiel für die Verwendung des Nginx-Reverse-Proxys für Go-FastDFS

Hintergrund go-fastdfs ist ein verteiltes Dateisy...

So lösen Sie das Problem der Randüberlappung

1. Zunächst müssen Sie wissen, was den vertikalen ...