Teil 3: MySQL 4 - Optimierung von Anfragen
SQL-Optimierung: Tabellen und Spalten anpassen
Optimales Zeilenspeicherformat wählen
Bei MyISAM- und ISAM-Tabellen sollten Sie Spalten fester statt variabler Breite verwenden. Das gilt insbesondere für Tabellen, die häufig geändert werden und damit eher einer Fragmentierung unterliegen. Beispielsweise sollten Sie alle Zeichenspalten als CHAR
statt als VARCHAR
deklarieren. Damit braucht Ihre Tabelle zwar mehr Speicherplatz, aber die Zeilen fester Länge können viel schneller verarbeitet werden als Zeilen variabler Länge.
Bei InnoDB-Tabellen unterscheidet sich das interne Speicherformat für Spalten mit fester und für Spalten mit variabler Breite nicht (alle Zeilen verwenden einen Header, der Zeiger enthält, die auf die Spaltenwerte verweisen); es gibt hier also keinen Grund, CHAR
gegenüber VARCHAR
den Vorzug zu geben. Vielmehr sollten Sie VARCHAR
sogar vorziehen, da der Speicherbedarf im Vergleich zu CHAR
im Schnitt niedriger liegt; Sie können auf diese Weise also Speicherplatz sparen und die Anzahl der Festplattenzugriffe bei der Verarbeitung von Zeilen verringern.
Auch bei BDB-Tabellen gibt es zwischen den Speicherformaten keinen großen Unterschied. Sie können je eine Tabelle mit einem der Formate anlegen und dann empirisch prüfen, ob es auf Ihrem System einen bedeutenden Unterschied gibt.
Anmerkung: In dieser Beschreibung steht der Begriff »BLOB-Typen« immer stellvertretend für BLOB
- und TEXT
-Typen.