Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in temporäre MySQL-Tabellen und abgeleitete Tabellen

Detaillierte Einführung in temporäre MySQL-Tabellen und abgeleitete Tabellen

黄舟
黄舟Original
2017-03-25 14:09:271377Durchsuche

MySQLIn bestimmten Szenarien erstellt der Server bei der Verarbeitung von Anfragen interne temporäre Tabellen. Das heißt, die Tabelle wird mit der MEMORY-Engine im Speicher verarbeitet oder mit der MyISAM-Engine auf der Festplatte gespeichert. Wenn die Tabelle zu groß ist, überträgt der Server möglicherweise die temporäre Tabelle im Speicher auf die Festplatte.

Über 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 enthält Für ein Feld (Gruppen-nach-Klausel für ein anderes Feld) muss MySQL zum Abschließen der Abfrage automatisch eine temporäre Tabelle zum Speichern des temporären Ergebnissatzes erstellen und verwalten. Diese temporäre Tabelle wird von MySQL selbst erstellt und verwaltet und wird zu einer automatisch erstellten temporären Tabelle Tisch. Bei automatisch erstellten temporären Tabellen verwendet MySQL immer zuerst die temporäre Speichertabelle. Wenn die temporäre Speichertabelle zu groß wird und einen bestimmten Schwellenwert erreicht, wird sie gelöscht eine externe temporäre Tabelle. Mit anderen Worten: Die externe Speicher-Temporärtabelle ist eine Erweiterung der Speicher-Temporärtabelle im Speicherplatz. Der Schwellenwert für die Übertragung einer temporären Speichertabelle in eine temporäre Speichertabelle für den 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. Zum Beispiel:

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

Über temporäre Tabellen

Wenn Sie an sehr großen Tabellen arbeiten, müssen Sie möglicherweise gelegentlich viele Abfragen ausführen, um eine kleine Datenmenge zu erhalten Wenn Sie diese Abfragen nicht für die gesamte Tabelle ausführen, ist es möglicherweise schneller, wenn MySQL die wenigen benötigten Datensätze auf einmal findet, die Datensätze in einer temporären Tabelle auswählt und dann die Abfrage für diese Tabellen ausführt.

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

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

)

Die temporäre Tabelle bleibt bestehen, solange Sie mit MySQL verbunden sind. Wenn Sie die Verbindung trennen, löscht MySQL automatisch die Tabelle und gibt den verwendeten Speicherplatz frei. Natürlich können Sie den Tisch herunterklappen und Platz schaffen, 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, muss die temporäre Tabelle die nicht temporäre Tabelle tmp_table maskieren (verbergen). .

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

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

) TYPE = HEAP

Da die HEAP-Tabelle im Speicher gespeichert ist, Die darauf ausgeführten Abfragen sind möglicherweise schneller als eine temporäre Tabelle auf der Festplatte. Allerdings unterscheiden sich HEAP-Tabellen etwas von gewöhnlichen Tabellen und haben ihre eigenen Einschränkungen. Weitere Informationen finden Sie im MySQL-Referenzhandbuch.

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

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 nur auf Tabellen beschränkt, die mit den folgenden Anweisungen erstellt wurden:

Felder definieren :

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

)

2) Importieren Sie die Abfrageergebnisse direkt in die 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 dies der Fall ist Sehr schnell im Speicher. Die Syntax lautet wie folgt:

CREATE TEMPORARY TABLE tmp_table (

name VARCHAR(10) NOT NULL,

value INTEGER NOT NULL

) TYPE = HEAP

3. Aus der obigen Analyse können wir ersehen, dass die Daten in der temporären Tabelle automatisch gelöscht werden Wenn Sie die Verbindung trennen, aber in Ihrem Programm Es ist unmöglich, jedes Mal eine Verbindung zur Datenbank herzustellen, wenn Sie SQL ausgeben (wenn dies der Fall ist, liegt das Problem vor, über das Sie sich Sorgen machen, andernfalls liegt kein Problem vor). , da die Daten nur gelöscht werden, wenn die Datenbankverbindung getrennt wird. Wenn Sie in einer Datenbankverbindung SQL mehrmals ausführen, löscht das System die temporären Tabellendaten nicht automatisch.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in temporäre MySQL-Tabellen und abgeleitete Tabellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn