Zusammenfassung des Unterschieds zwischen der Verwendung von „from“ und „join“ zum Abfragen zweier Tabellen in MySQL

Zusammenfassung des Unterschieds zwischen der Verwendung von „from“ und „join“ zum Abfragen zweier Tabellen in MySQL

Vorwort

In MySQL ist die Abfrage mehrerer Tabellen eine sehr häufige Anforderung. Bei der Abfrage mehrerer Tabellen können Sie mehrere Tabellen verwenden oder mehrere Tabellen mithilfe von Join verbinden.

Was ist der Unterschied zwischen diesen beiden Abfragen? Welche Abfrage ist effizienter? Angesichts dieser Fragen habe ich beschlossen, es auszuprobieren.

1. Erstellen Sie zunächst zwei Tabellen eins und zwei auf dem lokalen MySQL

ein Tisch

CREATE TABLE `one` (
 `id` int(0) NICHT NULL AUTO_INCREMENT,
 `eins` varchar(100) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE = InnoDB-ZEICHENSATZ = utf8;

Zwei Tisch

CREATE TABLE `zwei` (
 `id` int(0) NICHT NULL AUTO_INCREMENT,
 `zwei` varchar(100) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE = InnoDB-ZEICHENSATZ = utf8;

Geben Sie zunächst einige Daten ein und prüfen Sie diese.

Wählen Sie one.id,one.one,two.id,two.two aus one,two, wobei one.id=two.id; 

wähle one.id, one.one,two.id, two.two aus eins, verbinde zwei mit one.id=two.id; 

Vergleicht man die beiden Abfragen, ist in der Abfragezeit fast kein Unterschied zu erkennen. Auch bei der Überprüfung der SQL-Laufanalyse ist kein Unterschied zu erkennen.

Um den Leistungsunterschied zwischen den beiden Abfragen hervorzuheben, fügen Sie 1 Million Datensätze in Tabelle eins und 100.000 Datensätze in Tabelle zwei ein. Angesichts einer großen Datenmenge wird der kleinste Unterschied unendlich vergrößert. Vergleichen wir nun die Unterschiede.

Verwenden Sie zunächst Python, um Daten in die Datenbank einzufügen. Warum Python verwenden? Weil Python einfache

Zum Code

pymysql importieren

db = pymysql.connect("127.0.0.1", "root", "123456", "bruce")
Cursor = db.cursor()

sql = "INSERT INTO einen (einen) Wert (%s)"
für i im Bereich (1000000):
 cursor.executemany(sql, ['eins' + str(i)])
 wenn i % 10000 == 0:
 db.commit()
 drucken(str(i) + 'commit')
db.commit()

drucken('füge eins ein, ok')
sql2 = "INSERT INTO zwei (zwei) Werte (%s)"
für i im Bereich (100000):
 cursor.executemany(sql2, ['zwei' + str(i)])
 wenn i % 10000 == 0:
 db.commit()
 drucken(str(i) + 'commit')
db.commit()
drucken('zwei einfügen ok')

Seien Sie geduldig und warten Sie einen Moment, das Einfügen wird einige Zeit dauern;

Nachdem die Daten eingefügt wurden, fragen wir einige

Verwenden Sie zunächst FROM zwei Tabellen zur Abfrage

Wählen Sie one.id,one.one,two.id,two.two aus one,two, wobei one.id=two.id; 

Es dauert ungefähr 20,49 Sekunden;

Lassen Sie uns erneut die JOIN-Abfrage verwenden

wähle one.id, one.one,two.id, two.two aus eins, verbinde zwei mit one.id=two.id; 

Es dauerte 19,45 Sekunden. Bei 100.000 Datenelementen ist ein 1-Sekunden-Fehler keine große Sache.

Schauen Sie sich die Abfrage an, wenn Sie die ID als Bedingungsbedingung verwenden

Es gibt keinen Unterschied in der Abfragezeit. Werfen wir einen Blick auf die SQL-Ausführungsanalyse.

Das Ergebnis ist immer noch das gleiche

Zusammenfassen

In MySQL führen die Verwendung von FROM zum Abfragen mehrerer Tabellen und die Verwendung einer JOIN-Verbindung (außer LEFT JOIN und RIGHT JOIN) zu denselben Abfrageergebnissen und derselben Abfrageeffizienz.

Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL verwendet Inner Join zum Abfragen/Löschen/Ändern von Beispielen
  • MySQL-Abfrageoptimierung: Einführung in das Sortierlimit für Join-Abfragen (Join-, Order-by- und Limit-Anweisung)
  • MySQL-Optimierung: Join statt Unterabfrage verwenden
  • Analyse der Verwendung mehrerer MySQL-Left-Join-Abfragen
  • Abfrageprozess und Optimierungsmethode der (JOIN/ORDER BY)-Anweisung in MySQL
  • Zusammenfassung verschiedener gängiger Abfragebeispiele für Join-Tabellen in MySQL
  • Detaillierte Erläuterung der Verwendung von MySQL-Profilen zur Analyse von langsamem SQL (Group Left Join ist effizienter als Unterabfrage)
  • Wissenspunkte zum Prinzip der MySQL-Join-Abfrage
  • Grundlegende MySQL-Tabellenabfragen – häufige Fehler beim Left-Join
  • MySQL effiziente Abfrage Left Join und Gruppieren nach (plus Index)

<<:  Tutorial zum Erstellen des File-Sharing-Dienstes Samba unter CentOS6.5

>>:  Eine kurze Diskussion über React Native APP-Updates

Artikel empfehlen

Miniprogramm zur Implementierung der Token-Generierung und -Verifizierung

Inhaltsverzeichnis Verfahren Demo Mini-Programm B...

Einführung in die Vue-Grundlagen: Installation und Verwendung von Vuex

Inhaltsverzeichnis 1. Was ist vuex 2. Installatio...

Fallanalyse mehrerer MySQL-Aktualisierungsvorgänge

Inhaltsverzeichnis Fallstudie Kontostand aktualis...

HTML Gewichtsverlust Optimieren Sie HTML-Tags zum Erstellen von Webseiten

HTML 4 HTML (nicht XHTML), MIME-Typ ist text/html...

Native js realisiert das Ziehen und Ablegen des Neun-Quadrat-Rasters

Verwenden Sie natives JS, um ein neuneckiges Rast...

Beispiel für die Implementierung einer kaskadierenden MySQL-Replikation

Bei der sogenannten kaskadierenden Replikation sy...

Schritte der MySQL-Methode zum Bestimmen, ob es sich um eine Teilmenge handelt

Inhaltsverzeichnis 1. Problem 2. Lösung Option 1:...

Detaillierte Erklärung zur Verwendung der Vue h-Funktion

Inhaltsverzeichnis 1. Verstehen 2. Verwendung 1. ...

Zusammenfassung der Berechtigungsprobleme bei gespeicherten MySQL-Prozeduren

Ja, gespeicherte MySQL-Prozeduren scheinen sehr s...

Mehrere Möglichkeiten zur Implementierung eines 0-ms-Verzögerungstimers in js

Inhaltsverzeichnis WarteschlangeMikrotask asynchr...

So ändern Sie das Root-Passwort in MySQL 5.7

Ab MySQL 5.7 wurden viele Sicherheitsupdates hinz...