Einfache Verwendung von temporären MySQL-Tabellen

Einfache Verwendung von temporären MySQL-Tabellen

Temporäre MySQL-Tabellen sind sehr nützlich, wenn wir temporäre Daten speichern müssen. Die temporäre Tabelle ist nur in der aktuellen Verbindung sichtbar. Wenn die Verbindung geschlossen wird, löscht MySQL die Tabelle automatisch und gibt den gesamten Speicherplatz frei.

Temporäre Tabellen wurden in MySQL Version 3.23 hinzugefügt. Wenn Ihre MySQL-Version niedriger als 3.23 ist, können Sie temporäre MySQL-Tabellen nicht verwenden. Heutzutage verwenden jedoch nur noch wenige Leute eine so niedrige Version des MySQL-Datenbankdienstes.

Temporäre MySQL-Tabellen sind nur für die aktuelle Verbindung sichtbar. Wenn Sie ein PHP-Skript zum Erstellen einer temporären MySQL-Tabelle verwenden, wird die temporäre Tabelle bei jeder Ausführung des PHP-Skripts automatisch zerstört.

Wenn Sie andere MySQL-Clientprogramme verwenden, um eine Verbindung zum MySQL-Datenbankserver herzustellen und eine temporäre Tabelle zu erstellen, wird die temporäre Tabelle erst gelöscht, wenn Sie das Clientprogramm schließen. Natürlich können Sie sie auch manuell löschen.

Beispiele

Nachfolgend sehen Sie ein einfaches Beispiel für die Verwendung temporärer MySQL-Tabellen. Der folgende SQL-Code kann auf die Funktion mysql_query() eines PHP-Skripts angewendet werden.

mysql> TEMPORÄRE TABELLE „SalesSummary“ erstellen (
  -> Produktname VARCHAR (50) NICHT NULL
  -> , total_sales DECIMAL(12,2) NICHT NULL STANDARD 0.00
  -> , Durchschnittlicher Stückpreis DECIMAL(7,2) NICHT NULL STANDARD 0,00
  -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> INSERT INTO Verkaufszusammenfassung
  -> (Produktname, Gesamtumsatz, durchschnittlicher Stückpreis, Gesamtzahl verkaufter Einheiten)
  -> WERTE
  -> ('Gurke', 100,25, 90, 2);

mysql> AUSWÄHLEN * FROM Verkaufszusammenfassung;
+--------------+----------+----------------+------------------+
| Produktname | Gesamtumsatz | Durchschnittlicher Stückpreis | Gesamtzahl verkaufter Einheiten |
+--------------+----------+----------------+------------------+
| Gurke | 100,25 | 90,00 | 2 |
+--------------+----------+----------------+------------------+
1 Zeile im Satz (0,00 Sek.)

Wenn Sie den Befehl SHOW TABLES zum Anzeigen einer Tabellenliste verwenden, wird die Tabelle „SalesSummary“ nicht angezeigt.

Wenn Sie die aktuelle MySQL-Sitzung beenden und dann den Befehl SELECT verwenden, um die ursprünglich erstellten temporären Tabellendaten zu lesen, stellen Sie fest, dass die Tabelle in der Datenbank nicht vorhanden ist, da die temporäre Tabelle beim Beenden zerstört wurde.

Löschen temporärer MySQL-Tabellen

Standardmäßig werden temporäre Tabellen automatisch zerstört, wenn Sie die Verbindung zur Datenbank trennen. Natürlich können Sie auch den Befehl DROP TABLE in der aktuellen MySQL-Sitzung verwenden, um die temporäre Tabelle manuell zu löschen.

Nachfolgend sehen Sie ein Beispiel für das manuelle Löschen einer temporären Tabelle:

mysql> TEMPORÄRE TABELLE „SalesSummary“ erstellen (
  -> Produktname VARCHAR (50) NICHT NULL
  -> , total_sales DECIMAL(12,2) NICHT NULL STANDARD 0.00
  -> , Durchschnittlicher Stückpreis DECIMAL(7,2) NICHT NULL STANDARD 0,00
  -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> INSERT INTO Verkaufszusammenfassung
  -> (Produktname, Gesamtumsatz, durchschnittlicher Stückpreis, Gesamtzahl verkaufter Einheiten)
  -> WERTE
  -> ('Gurke', 100,25, 90, 2);

mysql> AUSWÄHLEN * FROM Verkaufszusammenfassung;
+--------------+----------+----------------+------------------+
| Produktname | Gesamtumsatz | Durchschnittlicher Stückpreis | Gesamtzahl verkaufter Einheiten |
+--------------+----------+----------------+------------------+
| Gurke | 100,25 | 90,00 | 2 |
+--------------+----------+----------------+------------------+
1 Zeile im Satz (0,00 Sek.)
mysql> DROP TABLE Verkaufszusammenfassung;
mysql> AUSWÄHLEN * FROM Verkaufszusammenfassung;
FEHLER 1146: Tabelle „RUNOOB.SalesSummary“ existiert nicht

So erstellen Sie eine temporäre Tabelle direkt mithilfe einer Abfrage:

CREATE TEMPORARY TABLE temporärer Tabellenname AS
(
  SELECT * FROM alter Tabellenname LIMIT 0,10000
);

Hier sind einige zusätzliche

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 der normalen Anweisung CREATE TABLE das Schlüsselwort TEMPORARY 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 temporäre Tabelle

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 normalen 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

Temporäre Tabelle erstellen tmp_table SELECT * FROM Tabellenname

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. Allerdings ist es Ihrem Programm nicht möglich, bei jeder Ausgabe einer SQL-Anweisung eine Verbindung zur Datenbank herzustellen (wenn dies der Fall ist, liegt das Problem vor, über das Sie sich Sorgen machen. Wenn nicht, liegt kein Problem vor). Denn die Daten werden nur gelöscht, 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
  • 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

<<:  Anzeige der Tabellenliste für die Front-End-Anwendungsentwicklung von Vue Element

>>:  Richtige Schritte zur Installation von Nginx unter Linux

Artikel empfehlen

Detaillierte Erklärung langer Transaktionsbeispiele in MySQL

Vorwort: Die Artikelserie „Erste Schritte mit MyS...

Webdesign muss Zweck, Ideen, Gedanken und Beständigkeit haben

<br />Einleitung: Diese Idee kam mir, als ic...

Lösung für das Problem des MySQL-Master-Slave-Switch-Kanals

Nach der VIP-Konfiguration wird beim Aktiv/Standb...

VMWare Linux MySQL 5.7.13 Installations- und Konfigurationstutorial

In diesem Artikel finden Sie das Tutorial zur Ins...

Grundkenntnisse der MySQL-Datenbank

Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...

Detaillierte Erklärung der Kernkonzepte und der grundlegenden Verwendung von Vuex

Inhaltsverzeichnis einführen Start Installieren ①...

Implementierung des Vue 3.x-Projekts basierend auf Vite2.x

Erstellen eines Vue 3.x-Projekts npm init @vitejs...

Konvertieren Sie ausgeschnittene PSD-Bilder in das Div+CSS-Format

Beispiel für das Zuschneiden einer Webseite von P...

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...

Detaillierte Erklärung des Linux-Befehls unzip

Inhaltsverzeichnis 1. Unzip-Befehl 1.1 Syntax 1.2...