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.