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

Eine kurze Diskussion über die Magie von parseInt() in JavaScript

Ursache Der Grund für das Schreiben dieses Blogs ...

CSS erzielt den „Bottom Absorption“-Effekt im Footer

Wir stoßen häufig auf dieses Problem: Wie kann ma...

Vue implementiert das Hinzufügen, Anzeigen und Löschen mehrerer Bilder

In diesem Artikel wird der spezifische Code für V...

JavaScript-Ereigniserfassungs-Blubbern und Erfassungsdetails

Inhaltsverzeichnis 1. Ereignisablauf 1. Konzept 2...

Beispielcode für die Konvertierung von MySQL-Zeilen und -Spalten

1. Nachfrage Wir haben drei Tabellen. Wir müssen ...

Beschreibung der Grenzen und Bereiche zwischen MySQL

MySQL zwischen Grenzbereich Der Bereich zwischen ...

Lösung für das Problem des achtstündigen Unterschieds bei der MySQL-Einfügezeit

Lösen Sie das Problem des achtstündigen Zeitunter...

Vue+openlayer5-Methode zum Abrufen der Koordinaten des aktuellen Mauszeigers

Vorwort: Wie erhält man die Koordinaten der aktue...

So installieren und konfigurieren Sie den Apache-Webserver

Erfahren Sie, wie Sie Ihre eigene Website auf Apa...

Tutorial zur HTML-Tabellenauszeichnung (4): Rahmenfarbenattribut BORDERCOLOR

Um die Tabelle zu verschönern, können Sie untersc...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.5.27 winx64

1. Installationspaket MySQL-Dienst-Downloadadress...

Zusammenfassung von über 50 Hilfsfunktionen in JavaScript

JavaScript kann viele tolle Dinge. Dieser Artikel...