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:
|
<<: Tutorial zum Erstellen des File-Sharing-Dienstes Samba unter CentOS6.5
>>: Eine kurze Diskussion über React Native APP-Updates
Inhaltsverzeichnis 1. Einleitung 2. Über vue-simp...
Inhaltsverzeichnis Verfahren Demo Mini-Programm B...
Inhaltsverzeichnis 1. Was ist vuex 2. Installatio...
Inhaltsverzeichnis Fallstudie Kontostand aktualis...
HTML 4 HTML (nicht XHTML), MIME-Typ ist text/html...
CentOS7 herunterladen Das Image, das ich herunter...
Inhaltsverzeichnis Ideen Abfangen von Anfragen An...
Verwenden Sie natives JS, um ein neuneckiges Rast...
Bei der sogenannten kaskadierenden Replikation sy...
Wenn Sie 5 Datensätze in Tabelle1 einfügen möchte...
Inhaltsverzeichnis 1. Problem 2. Lösung Option 1:...
Inhaltsverzeichnis 1. Verstehen 2. Verwendung 1. ...
Ja, gespeicherte MySQL-Prozeduren scheinen sehr s...
Inhaltsverzeichnis WarteschlangeMikrotask asynchr...
Ab MySQL 5.7 wurden viele Sicherheitsupdates hinz...