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

So führen Sie .sh-Dateien im Linux-System aus

Es gibt zwei Möglichkeiten, .sh-Dateien im Linux-...

Grundsätze zur Auswahl von MySQL-Datentypen

Inhaltsverzeichnis Klein aber fein Mach es einfac...

Beispiel für die Implementierung einer eingebetteten Tabelle mit vue+elementUI

Während meines Praktikums im letzten Studienjahr ...

Erste Schritte mit CSS3-Animation in 10 Minuten

Einführung Mit Animation können Sie mithilfe von ...

Einführung in die neuen Funktionen von MySQL 8.0.11

MySQL 8.0 für Windows v8.0.11 offizielle kostenlo...

Detaillierte Erläuterung der allgemeinen Docker-Befehle Study03

Inhaltsverzeichnis 1. Hilfe-Befehl 2. Befehl „Spi...

Java verwendet Apache.POI, um HSSFWorkbook nach Excel zu exportieren

Verwenden Sie HSSFWorkbook in Apache.POI, um nach...

Vor- und Nachteile von bedingten Kommentaren im Internet Explorer

Die bedingten Kommentare des Internet Explorers s...

So verwenden Sie JSX in Vue

Was ist JSX JSX ist eine Syntaxerweiterung von Ja...

CSS-Syntax für Tabellenränder

<br /> CSS-Syntax für Tabellenränder Zu den ...