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: 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. 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 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:
|
<<: Node verwendet das Modul async_hooks zur Anforderungsverfolgung
>>: Grundkenntnisse zu MySQL – Lernhinweise
Inhaltsverzeichnis 1. Die Rolle der Uhr in Vue is...
netem und tc: netem ist ein Netzwerksimulationsmo...
Erkennen Sie die Unterschiede zwischen den Method...
Inhaltsverzeichnis 1. Einleitung 2. Erster Eindru...
Inhaltsverzeichnis Überblick Die Rolle des Revers...
Inhaltsverzeichnis Schritt 1: Installation Schrit...
1. Kurze Einführung in die Veranstaltung Ein Erei...
Memo: Einfach erleben. Eintrag: Nr. 209 Diese Bei...
1. Installieren Sie Tomcat8 mit Docker 1. Suchen ...
In letzter Zeit muss das Vue-Projekt die Daten in...
1. Komplexe SQL-Abfragen 1.1. Einzeltabellenabfra...
Inhaltsverzeichnis 1. Technischer Überblick 2. Te...
Inhaltsverzeichnis Vorbereiten Fünf Waffen für … ...
Inhaltsverzeichnis Funktionseinführung Funktion E...
Inhaltsverzeichnis Frage: Es gibt 2 Token im Proj...