Vor einem Tabellenscan wird die Funktion
info()
aufgerufen, um zusätzliche Tabelleninformationen für den
Optimierer zu beschaffen.
Diese Informationen werden dem Optimierer nicht über
Rückgabewerte geliefert, sondern durch Zuweisung bestimmter
Eigenschaften der Klasse der Speicher-Engine. Diese
Eigenschaften liest der Optimierer, bevor der Aufruf von
info()
zurückkehrt.
Viele der von info()
gesetzten Werte werden
nicht nur vom Optimierer genutzt, sondern auch von der
SHOW TABLE STATUS
-Anweisung.
In sql/handler.h
werden alle öffentlichen
Eigenschaften vollständig aufgeführt. Einige der
gebräuchlichsten werden hier noch einmal wiedergegeben:
ulonglong data_file_length; /* Länge der Datendatei */ ulonglong max_data_file_length; /* Länge der Datendatei */ ulonglong index_file_length; ulonglong max_index_file_length; ulonglong delete_length; /* Freie Bytes */ ulonglong auto_increment_value; ha_rows records; /* Datensätze in der Tabelle */ ha_rows deleted; /* Gelöschte Datensätze */ ulong raid_chunksize; ulong mean_rec_length; /* Physikalische Länge der Datensätze */ time_t create_time; /* Erstellungszeitpunkt der Tabelle */ time_t check_time; time_t update_time;
Die für einen Tabellenscan wichtigste Eigenschaft ist
records
: Sie gibt an, wie viele Datensätze
die Tabelle hat. Zeigt die Speicher-Engine null oder eine Zeile
in der Tabelle an, verhält sich der Optimierer anders, als wenn
die Tabelle zwei oder mehr Zeilen hat. Daher ist es wichtig, vor
einem Scan von Tabellen, deren Größe nicht genau bekannt ist
(wie zum Beispiel in Fällen, wo die Daten aus einer externen
Quelle kommen), einen Wert größer gleich zwei zurückzugeben.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.