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

So erstellen Sie SonarQube mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Sona...

MySQL-Lösung für die Konfiguration mehrerer Instanzen

1.1 Was ist MySQL Multi-Instance? Einfach ausgedr...

Konfigurationsmethode für die SystemC-Umgebung unter Linux

Das Folgende ist die Konfigurationsmethode unter ...

Beispielcode zum Ausblenden von Element-Bildlaufleisten mithilfe von CSS

Wie kann ich die Bildlaufleisten ausblenden und t...

Mehrere CSS3-Tag-Abkürzungen (empfohlen)

border-radius: CSS3 abgerundete Ecken Syntax: bor...

Hinweise zum MySQL-Datenbank-Sicherungsprozess

Heute habe ich mir einige Dinge im Zusammenhang m...

Analyse der MySQL-Methode zum Exportieren nach Excel

Dieser Artikel beschreibt, wie Sie MySQL zum Expo...

Methoden und Schritte zum Upgrade von MySql5.x auf MySql8.x

Mehrere Unterschiede zwischen MySQL 5.x und MySQL...

Freundliche Alternativen zum Find Tool in Linux

Mit dem Befehl „Find“ können Sie in einem angegeb...

So verstehen und identifizieren Sie Dateitypen in Linux

Vorwort Wie wir alle wissen, ist in Linux alles e...