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

Zusammenfassung der Vue Watch-Überwachungsmethoden

Inhaltsverzeichnis 1. Die Rolle der Uhr in Vue is...

So simulieren Sie Netzwerkpaketverlust und -verzögerung in Linux

netem und tc: netem ist ein Netzwerksimulationsmo...

Detaillierte Einführungshinweise zu Vue

Inhaltsverzeichnis 1. Einleitung 2. Erster Eindru...

Erste Schritte mit Nginx Reverse Proxy

Inhaltsverzeichnis Überblick Die Rolle des Revers...

Detaillierte Erläuterung der geplanten MySQL-Aufgaben (Ereignisereignisse)

1. Kurze Einführung in die Veranstaltung Ein Erei...

Tutorial-Diagramm zur VMware-Installation des Ubuntu 20.04-Betriebssystems

Memo: Einfach erleben. Eintrag: Nr. 209 Diese Bei...

So installieren Sie Tomcat8 im Docker

1. Installieren Sie Tomcat8 mit Docker 1. Suchen ...

Echtzeitaktualisierung einer langen Verbindung auf der Vue+WebSocket-Seite

In letzter Zeit muss das Vue-Projekt die Daten in...

So verstehen Sie die Dateninteraktion und -anzeige im Vue-Frontend und -Backend

Inhaltsverzeichnis 1. Technischer Überblick 2. Te...

Fünf Möglichkeiten zum Durchlaufen von Objekten in JavaScript Beispielcode

Inhaltsverzeichnis Vorbereiten Fünf Waffen für … ...

Detaillierte Erläuterung der Einführung in die JavaScript-Funktion

Inhaltsverzeichnis Funktionseinführung Funktion E...

Analyse von 2 Token-Gründen und Beispielcode in der Webprojektentwicklung

Inhaltsverzeichnis Frage: Es gibt 2 Token im Proj...