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

Implementierung des Vue-Top-Tags-Browserverlaufs

Inhaltsverzeichnis Unsinn Implementierte Funktion...

JS realisiert Bild Digitaluhr

In diesem Artikelbeispiel wird der spezifische JS...

Drei Beispiele für Node.js-Methoden zum Abrufen von Formulardaten

Vorwort Nodejs ist eine serverseitige Sprache. Wä...

6 praktische Tipps für die TypeScript-Entwicklung

Inhaltsverzeichnis 1. Bestimmen Sie den Entitätst...

js-Objekt, um einen Daten-Paging-Effekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Join-Abfrage (Left Join, Right Join, Inner Join)

1. Allgemeine Verbindungen für MySQL INNER JOIN (...

Detaillierte Analyse der Replikation in MySQL

1.MySQL-Replikationskonzept Dies bedeutet, dass d...

Kontext und Eigenschaften von React erklärt

Inhaltsverzeichnis 1. Kontext 1. Anwendungsszenar...

Grafisches Tutorial zur Installation der komprimierten Version von MySQL 8.0.15

In diesem Artikel wird die Installationsmethode d...

So konfigurieren Sie nginx+php+mysql in Docker

Verstehen Sie zunächst eine Methode: Aufrufen ein...

So verwalten Sie Benutzer und Gruppen beim Ausführen von Docker

Docker ist ein Verwaltungstool, das Prozesse als ...

Webdesign: Wenn der Titel nicht vollständig angezeigt werden kann

<br />Ich habe mir heute die neu gestaltete ...