Eine kurze Erläuterung temporärer MySQL-Tabellen und abgeleiteter Tabellen

Eine kurze Erläuterung temporärer MySQL-Tabellen und abgeleiteter Tabellen

Abgeleitete Tabellen

Wenn die Hauptabfrage eine abgeleitete Tabelle enthält oder wenn die Select-Anweisung eine Union-Klausel enthält oder wenn die Select-Anweisung eine Order-By-Klausel für ein Feld (eine Group-By-Klausel für ein anderes Feld) enthält, muss MySQL automatisch eine temporäre Tabelle erstellen, um den temporären Ergebnissatz zu speichern und die Abfrage abzuschließen. Diese temporäre Tabelle wird von MySQL selbst erstellt und verwaltet und wird als automatisch erstellte temporäre Tabelle bezeichnet. Für automatisch erstellte temporäre Tabellen verwendet MySQL immer zuerst die temporäre Speichertabelle, da die Leistung der temporären Speichertabelle besser ist. Wenn die temporäre Speichertabelle zu groß wird und einen bestimmten Schwellenwert erreicht, wird die temporäre Speichertabelle in eine externe temporäre Speichertabelle konvertiert. Mit anderen Worten ist die temporäre Tabelle des externen Speichers hinsichtlich des Speicherplatzes eine Erweiterung der temporären Tabelle des Speichers. Der Schwellenwert für die Konvertierung einer temporären Tabelle im Speicher in eine temporäre Tabelle im externen Speicher wird durch den kleineren Wert der Systemvariablen max_heap_table_size und tmp_table_size bestimmt.

Abgeleitete Tabellen werden im Allgemeinen in der From-Klausel verwendet. wie:

select * from (select * from table) as t;

Informationen zu temporären Tabellen

Wenn Sie mit sehr großen Tabellen arbeiten, müssen Sie gelegentlich viele Abfragen ausführen, um eine kleine Teilmenge einer großen Datenmenge abzurufen. Anstatt diese Abfragen für die gesamte Tabelle auszuführen, ist es möglicherweise schneller, MySQL die wenigen Datensätze auf einmal suchen zu lassen, die Sie benötigen, diese Datensätze in einer temporären Tabelle auszuwählen und dann die Abfragen für diese Tabellen auszuführen.

Das Erstellen einer temporären Tabelle ist einfach. Fügen Sie einfach das Schlüsselwort TEMPORARY zur normalen Anweisung CREATE TABLE hinzu:

Temporäre Tabelle erstellen tmp_table (

Name VARCHAR(10) NOT NULL,

Wert INTEGER NICHT NULL

)

Die temporäre Tabelle bleibt für die Dauer Ihrer Verbindung zu MySQL bestehen. Wenn Sie die Verbindung trennen, löscht MySQL die Tabelle automatisch und gibt den belegten Speicherplatz frei. Natürlich können Sie die Tabelle löschen und Speicherplatz freigeben, während die Verbindung noch besteht.

DROP TABLE tmp_table

Wenn beim Erstellen einer temporären Tabelle mit dem Namen tmp_table bereits eine Tabelle mit dem Namen tmp_table in der Datenbank vorhanden ist, maskiert (verbirgt) die temporäre Tabelle zwangsläufig die nicht temporäre Tabelle tmp_table.

Wenn Sie die temporäre Tabelle als HEAP-Tabelle deklarieren, können Sie in MySQL auch angeben, dass sie im Speicher erstellt werden soll:

Temporäre Tabelle erstellen tmp_table (

Name VARCHAR(10) NOT NULL,

Wert INTEGER NICHT NULL

) TYP = HEAP

Da HEAP-Tabellen im Speicher abgelegt werden, können Abfragen, die Sie an diese Tabellen ausführen, schneller sein als an temporäre Tabellen auf der Festplatte. HEAP-Tabellen unterscheiden sich jedoch etwas von allgemeinen Tabellen und haben ihre eigenen Einschränkungen. Weitere Einzelheiten finden Sie im MySQL-Referenzhandbuch.

Wie bereits zuvor vorgeschlagen, sollten Sie temporäre Tabellen testen, um zu sehen, ob diese tatsächlich schneller sind als das Ausführen von Abfragen an eine große Datenbank. Wenn die Daten gut indiziert sind, ist die temporäre Tabelle möglicherweise überhaupt nicht schneller.

1. Nachdem die temporäre Tabelle von MySQL getrennt wurde, löscht das System automatisch die Daten in der temporären Tabelle. Dies ist jedoch auf die durch die folgende Anweisung erstellte Tabelle beschränkt:

Definieren Sie die Felder:

Temporäre Tabelle erstellen tmp_table (

Name VARCHAR(10) NOT NULL,

Wert INTEGER NICHT NULL

)

2) Importieren Sie die Abfrageergebnisse direkt in eine temporäre Tabelle

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name

2. Darüber hinaus können Sie mit MySQL auch temporäre Tabellen direkt im Speicher erstellen. Da es sich im Speicher befindet, ist die Geschwindigkeit sehr hoch. Die Syntax lautet wie folgt:

Temporäre Tabelle erstellen tmp_table (

Name VARCHAR(10) NOT NULL,

Wert INTEGER NICHT NULL

) TYP = HEAP

3. Aus der obigen Analyse ist ersichtlich, dass die Daten in der temporären Tabelle gelöscht werden. Sie werden automatisch gelöscht, wenn Sie die Verbindung trennen. Es ist Ihrem Programm jedoch nicht möglich, bei jeder Ausgabe einer SQL-Anweisung eine Verbindung zur Datenbank herzustellen (wenn dies der Fall ist, tritt das Problem auf, über das Sie sich Sorgen machen. Wenn nicht, gibt es kein Problem), da die Daten nur gelöscht werden, wenn die Datenbankverbindung getrennt wird. Wenn Sie in einer Datenbankverbindung mehrere SQL-Anweisungen ausgeben, löscht das System die temporären Tabellendaten nicht automatisch.

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
  • MySQL-FAQ-Serie: Wann werden temporäre Tabellen verwendet?
  • 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
  • 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

<<:  Node verwendet das Modul async_hooks zur Anforderungsverfolgung

>>:  Grundkenntnisse zu MySQL – Lernhinweise

Artikel empfehlen

Docker-Installations- und Konfigurationsschritte für MySQL

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...

Natives JS zum Erstellen einer Drag-Fotowand

Dieser Artikel zeigt Ihnen eine verschiebbare Fot...

Entdecken Sie, wie Ihnen eine LED den Einstieg in den Linux-Kernel erleichtert

Inhaltsverzeichnis Vorwort LED-Trigger Entdecken ...

Verwenden des CSS-Loaders zum Implementieren des CSS-Moduls in Vue-CLI

【Vorwort】 Sowohl die modularen CSS-Lösungen von V...

Beispielcode zum Bereitstellen von ELK mit Docker-Compose

Umfeld Host-IP 192.168.0.9 Docker-Version 19.03.2...

Fehler mit ungerader Breite und Höhe in IE6

Wie in der Abbildung gezeigt: Aber bei der Anzeig...

Zusammenfassung der Vue3-Slot-Nutzung

Inhaltsverzeichnis 1. Einführung in den V-Slot 2....

Detaillierte Erklärung der Funktionsweise von Nginx

So funktioniert Nginx Nginx besteht aus einem Ker...

So verwenden Sie Provide zur Implementierung der Statusverwaltung in Vue3

Inhaltsverzeichnis Vorwort So implementieren Sie ...

Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

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

Die Bilder in HTML werden direkt durch base64-kodierte Strings ersetzt

Kürzlich stieß ich auf eine Webseite, die zwar Bil...

12 Javascript-Tabellensteuerelemente (DataGrid) sind aussortiert

Wenn die DataSource-Eigenschaft eines DataGrid-Ste...