Lernen Sie die schwarze Technologie der Union-All-Verwendung in MySQL 5.7 in 5 Minuten

Lernen Sie die schwarze Technologie der Union-All-Verwendung in MySQL 5.7 in 5 Minuten

Leistung von „Union All“ in MySQL 5.6

Teil 1: MySQL 5.6.25

[root@HE1 ~]# MySQL -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 2
Serverversion: 5.6.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle und/oder Tochtergesellschaften. Alle Rechte vorbehalten.
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
mysql> Version auswählen();
+------------+
| version() |
+------------+
| 5.6.25-Protokoll |
+------------+
1 Zeile im Satz (0,26 Sek.)
  
mysql> erklären (ID aus Helei auswählen, nach ID sortieren) alles vereinigen (ID aus t auswählen, wobei ID=0, nach ID sortieren);
+----+--------------+------------+-------+---------------+--------+---------+---------+------+------+-----------------+
| ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra |
+----+--------------+------------+-------+---------------+--------+---------+---------+------+------+-----------------+
| 1 | PRIMARY | helei | index | NULL | idx_c1 | 4 | NULL | 5219 | Index wird verwendet |
| 2 | UNION | t | ALL | NULL | NULL | NULL | NULL | 1 | Verwenden von where |
| NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | Temporäre | verwenden |
+----+--------------+------------+-------+---------------+--------+---------+---------+------+------+-----------------+
3 Zeilen im Satz (0,00 Sek.)

Es ist ersichtlich, dass in MySQL Version 5.6 die Ausführungsergebnisse wie in der folgenden Abbildung dargestellt sind:

wKioL1f8bZvhzEMaAAFulp6pefo997.jpg

Aus dem Ausführungsplan werden die Abfrageergebnisse der Helei-Tabelle und der T-Tabelle in einer temporären Tabelle zusammengeführt und dann an den Client ausgegeben.

Leistung von „Union All“ in MySQL 5.7/MariaDB 10.1

Teil 1: MySQL 5.7.15

[root@HE1 ~]# mysql -uroot -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 8
Serverversion: 5.7.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
mysql> Version auswählen();
+------------+
| version() |
+------------+
| 5.7.15-Protokoll |
+------------+
1 Zeile im Satz (0,00 Sek.),
mysql> erklären (ID aus Helei auswählen, nach ID sortieren) alles vereinigen (ID aus t auswählen, wobei ID=0, nach ID sortieren);
+----+----------+-------+------------+-------+---------------+--------+---------+---------+------+---------+----------+----------+-------------+
| ID | Auswahltyp | Tabelle | Partitionen | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | gefiltert | Extra |
+----+----------+-------+------------+-------+---------------+--------+---------+---------+------+---------+----------+----------+-------------+
| 1 | PRIMARY | helei | NULL | index | NULL | idx_c1 | 4 | NULL | 5212 | 100.00 | Index wird verwendet |
| 2 | UNION | t | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100,00 | Verwenden von „where“ |
+----+----------+-------+------------+-------+---------------+--------+---------+---------+------+---------+----------+----------+-------------+
2 Zeilen im Satz, 1 Warnung (0,00 Sek.)

Es ist ersichtlich, dass in MySQL Version 5.7 die Ausführungsergebnisse wie in der folgenden Abbildung dargestellt sind:

wKiom1f8bijj3fJiAAF48HG3WPQ918.jpg

Teil 2: MariaDB 10.1.16

[root@HE3 ~]# /usr/local/mariadb/bin/mysql -uroot -S /tmp/mariadb.sock 
Willkommen beim MariaDB-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MariaDB-Verbindungs-ID ist 7
Serverversion: 10.1.16-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab und andere.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
MariaDB [(keine)]>
MariaDB [helei]> erklären (ID aus Helei auswählen, nach ID sortieren) alles vereinigen (ID aus t auswählen, wobei ID=0, nach ID sortieren);
+------+----------+----------+-----------+---------------+--------+---------+---------+------+---------+-------------+
| ID | Auswahltyp | Tabelle | Typ | mögliche Schlüssel | Schlüssel | Schlüssellänge | Ref. | Zeilen | Extra |
+------+----------+----------+-----------+---------------+--------+---------+---------+------+---------+-------------+
| 1 | PRIMARY | helei | index | NULL | idx_c1 | 4 | NULL | 5198 | Index wird verwendet |
| 2 | UNION | t | ALL | NULL | NULL | NULL | NULL | 1 | Verwenden von where |
+------+----------+----------+-----------+---------------+--------+---------+---------+------+---------+-------------+
2 Zeilen im Satz (0,00 Sek.)

Es ist ersichtlich, dass in MariaDB10.1 die Ausführungsergebnisse in der folgenden Abbildung dargestellt sind:

wKioL1f8bmmwi9GLAAFbMJCN0uU554.jpg

Aus den Ausführungsergebnissen können wir ersehen, dass weder MySQL 5.7 noch MariaDB 10.1 eine temporäre Tabelle erstellen. In der Reihenfolge werden zuerst die Abfrageergebnisse der helei-Tabelle an den Client ausgegeben und dann die Abfrageergebnisse der t-Tabelle an den Client.

Die Optimierung in diesem Artikel gilt nur für Union All und ist für Union und Order By in der äußersten Schicht nicht wirksam. Wie in der folgenden Abbildung dargestellt:

wKiom1f8boazPx35AAKnKQS1Ig4776.jpg

--Zusammenfassen--

In MySQL 5.7/MariaDB 10.1 erstellt union all keine temporären Tabellen mehr, was den I/O-Overhead bei Union-Abfragen reduziert. Diese Funktion ist in MySQL 5.5/5.6 nicht verfügbar.

Oben ist die Black-Technologie, die ich Ihnen in 5 Minuten vorgestellt habe, um die Verwendung von Union All in MySQL5.7 zu verstehen. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • So verwenden Sie „union all“ in MySQL, um die Union-Sortierung zu erhalten
  • Grundlegende Verwendung von UNION und UNION ALL in MySQL
  • Kurze Analyse von MySQL Union und Union All
  • Vergleich der Effizienz der Verwendung von „or“, „in“ und „union all“ in MySQL-Abfragebefehlen
  • Einführung in die Verwendung der gemeinsamen MySQL-Abfragen UNION und UNION ALL
  • Ein kurzes Verständnis des Unterschieds zwischen MySQL Union All und Union

<<:  So führen Sie geplante PHP-Aufgaben in CentOS7 aus

>>:  Lösung für die geringe Schreibeffizienz von unter AIX gemountetem NFS

Artikel empfehlen

Vue implementiert eine Komponente zur dynamischen Abfrageregelgenerierung

1. Dynamische Abfrageregeln Die dynamischen Abfra...

favico.ico --- Schritte zum Einrichten des Website-ICO-Symbols

1. Laden Sie die erfolgreich generierte Symboldate...

Vue hält den Benutzer angemeldet (verschiedene Token-Speichermethoden)

Inhaltsverzeichnis So setzen Sie Cookies Nachteil...

Centos7-Installation und Konfiguration von Mysql5.7

Schritt 1: Holen Sie sich die MySQL YUM-Quelle Ge...

MySql-Gruppierung und zufälliges Abrufen eines Datenelements aus jeder Gruppe

Idee: Einfach erst zufällig sortieren und dann gr...

Einführung in HTML_PowerNode Java Academy

Was ist HTML? HTML ist eine Sprache zur Beschreib...

Empfohlene Methode zur Fehlerbehandlung für canvas.toDataURL image/png

Problemhintergrund: Es ist erforderlich, einen Sc...

So verwenden Sie Axios, um Netzwerkanforderungen in React Native zu stellen

In der Front-End-Entwicklung gibt es viele Möglic...

Detaillierte Erläuterung der 6 Möglichkeiten der JS-Vererbung

Vererbung von Prototypketten Die Prototypenvererb...

So konfigurieren Sie den Redis-Sentinel-Modus in Docker (auf mehreren Servern)

Inhaltsverzeichnis Vorwort Zustand Docker install...