MySQL-FAQ-Serie: Wann werden temporäre Tabellen verwendet?

MySQL-FAQ-Serie: Wann werden temporäre Tabellen verwendet?

Einführung in temporäre Tabellen

Was ist eine temporäre Tabelle: MySQL wird zum Speichern einiger Zwischenergebnissätze verwendet. Temporäre Tabellen sind nur in der aktuellen Verbindung sichtbar. Wenn die Verbindung geschlossen wird, löscht Mysql die Tabelle automatisch und gibt den gesamten Speicherplatz frei. Warum temporäre Tabellen generiert werden: Im Allgemeinen führt komplexes SQL dazu, dass eine große Anzahl temporärer Tabellen erstellt wird

Es gibt zwei Arten von temporären Tabellen: temporäre Speichertabellen und temporäre Festplattentabellen. Temporäre Speichertabellen verwenden die Speicher-Speicher-Engine und temporäre Festplattentabellen verwenden die Myisam-Speicher-Engine (temporäre Festplattentabellen können auch die InnoDB-Speicher-Engine verwenden. Der Parameter internal_tmp_disk_storage_engine steuert, welche Speicher-Engine verwendet wird. Die Standardeinstellung ist nach MySQL 5.7.6 die InnoDB-Speicher-Engine und in früheren Versionen die Myisam-Speicher-Engine). Verwenden Sie die Parameter „Created_tmp_disk_tables“ und „Created_tmp_tables“, um anzuzeigen, wie viele temporäre Datenträgertabellen generiert werden und wie alle temporären Tabellen (Speicher und Datenträger) generiert werden.

MySQL erstellt temporäre Tabellen in den folgenden Situationen:

1. UNION-Abfrage;

2. Verwenden Sie den TEMPTABLE-Algorithmus oder die Ansicht in einer UNION-Abfrage;

3. Wenn die ORDER BY- und GROUP BY-Klauseln unterschiedlich sind;

4. Bei Tabellenverknüpfungen befindet sich die Spalte ORDER BY nicht in der treibenden Tabelle.

5. DISTINCT-Abfrage und ORDER BY hinzufügen;

6. Wenn die Option SQL_SMALL_RESULT in SQL verwendet wird;

7. Unterabfragen in FROM;

8. Tabellen, die während Unterabfragen oder Semi-Joins erstellt wurden;

EXPLAIN Überprüfen Sie die Spalte Extra des Ausführungsplanergebnisses. Wenn sie Using Temporary enthält, bedeutet dies, dass eine temporäre Tabelle verwendet wird.

Wenn die Datenmenge, die in der temporären Tabelle gespeichert werden muss, die Obergrenze (Größe der temporären Tabelle oder maximale Größe der Heap-Tabelle, je nachdem, welche größer ist) überschreitet, muss natürlich eine plattenbasierte temporäre Tabelle generiert werden.

Temporäre Datenträgertabellen werden in den folgenden Situationen erstellt:

1. Die Datentabelle enthält BLOB/TEXT-Spalten;

2. In den Spalten GROUP BY oder DSTINCT gibt es Spalten vom Zeichentyp mit mehr als 512 Zeichen (oder Spalten vom Binärtyp mit mehr als 512 Bytes. Vor 5.6.15 wird nur berücksichtigt, ob sie 512 Bytes überschreiten).

3. In SELECT-, UNION- und UNION ALL-Abfragen gibt es Spalten mit einer maximalen Länge von über 512 (512 Zeichen für Zeichenfolgentypen und 512 Byte für Binärtypen).

4. Führen Sie SQL-Befehle wie SHOW COLUMNS/FIELDS und DESCRIBE aus, da ihre Ausführungsergebnisse den Spaltentyp BLOB verwenden.

Ab 5.7.5 wird eine neue Systemoption internal_tmp_disk_storage_engine hinzugefügt, um den Engine-Typ von temporären Festplattentabellen als InnoDB zu definieren. Zuvor konnte nur MyISAM verwendet werden. Die neue Systemoption default_tmp_storage_engine, die nach 5.6.3 hinzugefügt wurde, steuert den Engine-Typ der temporären Tabellen, die von CREATE TEMPORARY TABLE erstellt werden. Zuvor war der Standardwert MEMORY. Verwechseln Sie die beiden nicht.

Siehe das folgende Beispiel

mysql> setze default_tmp_storage_engine = "InnoDB";
-rw-rw---- 1 mysql mysql 8558 7. Juli 15:22 #sql4b0e_10_0.frm – Temporäre Tabelle der InnoDB-Engine -rw-rw---- 1 mysql mysql 98304 7. Juli 15:22 #sql4b0e_10_0.ibd
-rw-rw---- 1 mysql mysql 8558 7. Juli 15:25 #sql4b0e_10_2.frm

mysql> setze default_tmp_storage_engine = "MyISAM";
-rw-rw---- 1 mysql mysql 0 7. Juli 15:25 #sql4b0e_10_2.MYD – Temporäre Tabelle der MyISAM-Engine -rw-rw---- 1 mysql mysql 1024 7. Juli 15:25 #sql4b0e_10_2.MYI

mysql> setze default_tmp_storage_engine = "SPEICHER";
-rw-rw---- 1 mysql mysql 8558 7. Juli 15:26 #sql4b0e_10_3.frm – Temporäre Tabelle der MEMORY-Engine

Zusammenfassen

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:
  • Detaillierte Erklärung des Unterschieds zwischen temporärer MySQL-Tabelle und Partitionstabelle
  • Analyse des Prinzips und der Erstellungsmethode der temporären MySQL-Tabelle
  • Analyse der Verwendung temporärer MySQL-Tabellen [Abfrageergebnisse können in temporären Tabellen gespeichert werden]
  • So verwenden Sie den temporären MySQL 5.7-Tablespace, um Fallstricke zu vermeiden
  • Detaillierte Analyse des temporären JDBC- und MySQL-Tablespace
  • Einfache Verwendung von temporären MySQL-Tabellen
  • Der Unterschied zwischen Update und Select in MySQL für einzelne und mehrere Tabellen sowie Ansichten und temporäre Tabellen
  • Detaillierte Erklärung der Verwendung von zwei Arten von temporären Tabellen in MySQL
  • Eine kurze Erläuterung temporärer MySQL-Tabellen und abgeleiteter Tabellen
  • Grundlegendes Tutorial zur Erstellung und Verwendung temporärer Tabellen in MySQL
  • Einige grundlegende Verwendungsmethoden für temporäre Tabellen in MySQL
  • So verwenden Sie temporäre Tabellen, um MySQL-Abfragen zu beschleunigen
  • Beispiele für die Verwendung temporärer Tabellen in MySQL

<<:  Welcher Befehl eignet sich besser für die unscharfe Suche nach Dateien in Linux?

>>:  React Native realisiert den Auf- und Ab-Pull-Effekt der Überwachungsgeste

Artikel empfehlen

Detaillierte Beispiele für Variablen- und Funktionspromotion in JavaScript

js-Ausführung Phase der lexikalischen Analyse: um...

Zusammenfassung einiger Vorschläge zum HTML-Code-Schreibstil

Das Protokoll der Ressourcendatei weglassen Es wi...

Beispielcode zur Konvertierung von http in https mit nginx

Ich schreibe gerade ein kleines Programm. Da die ...

Ausführliche Erläuterung versteckter Felder, einer neuen Funktion von MySQL 8.0

Vorwort MySQL Version 8.0.23 fügt eine neue Funkt...

Grafische Einführung in den Unterschied zwischen := und = in MySQL

Der Unterschied zwischen := und = = Nur beim Setz...

Die Komponente vue-cropper realisiert das Zuschneiden und Hochladen von Bildern

In diesem Artikel wird der spezifische Code der V...

Lassen Sie Ihren Text mit dem Marquee-Attribut in HTML tanzen

Syntax: <marquee> …</marquee> Mithilfe...

So reduzieren Sie die Bildgröße mithilfe des mehrstufigen Docker-Builds

In diesem Artikel wird beschrieben, wie Sie die m...