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

Beispiele für die Verwendung des ES6-Spread-Operators

Inhaltsverzeichnis Was sind Spread- und Rest-Oper...

Installation von Docker CE auf Ubuntu

Dieser Artikel dient zur Aufzeichnung der Install...

Docker+Gitlab+Jenkins erstellt automatisierte Bereitstellung von Grund auf

Inhaltsverzeichnis Vorwort: 1. Docker installiere...

Beschreibung der chinesischen Sortierregeln für MySQL

Bei der Verwendung von MySQL sortieren und fragen...

So erreichen Sie die maximale Anzahl von Verbindungen in MySQL

Inhaltsverzeichnis Was ist der Grund für den plöt...

So führen Sie das React-Projekt auf dem offiziellen WeChat-Konto aus

Inhaltsverzeichnis 1. Verwenden Sie das „A“-Tag, ...

Der HTML 5-Entwurf wurde kein formeller Standard

<br />Gestern habe ich beim W3C gesehen, das...

Gestaltung von Popup-Fenstern und schwebenden Ebenen im Webdesign

Im Zuge des schrittweisen Übergangs von herkömmli...

Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker

Ziehen Sie zuerst das Image (oder erstellen Sie e...

Nginx kompiliert nginx - neues Modul hinzufügen

1. Vorhandene Module anzeigen /usr/local/nginx/sb...

Front-End-Statusverwaltung (Teil 2)

Inhaltsverzeichnis 1. Wiederholen 1.1. Shop (Bibl...