Teil 1: MySQL4 - Optimierung von Anfragen

SQL-Optimierung: Indizes richtig einsetzen

Nachteile der Indizierung

Im Allgemeinen wird eine Anfrage schneller ausgeführt, wenn MySQL erkennt, wie es einen Index dafür nutzen kann. Wenn Sie Ihre Tabelle nicht indizieren, schaden Sie sich also damit nur selbst. Wie Sie gesehen haben, habe ich die Nutzung der Indizes in den schönsten Farben geschildert. Gibt es Nachteile? Ja. In der Praxis werden diese Nachteile durch die Vorteile aufgewogen, aber Sie sollten wissen, worum es sich dabei handelt.

Erstens belegen Indexdateien Speicherplatz, und mehrere Indizes entsprechend mehr Speicherplatz. Das kann dann dazu führen, dass Sie die zulässige Tabellengröße schneller erreichen, als wenn keine Indizes vorhanden wären:

  • Bei ISAM- und MyISAM-Tabellen kann eine umfassende Indizierung der Tabelle dazu führen, dass die Indexdatei die maximale Dateigröße schneller erreicht als die Datendatei.

  • Bei BDB-Tabellen, die Daten- und Indexwerte in ein und derselben Datei speichern, führt das Hinzufügen eines Index ganz sicher dazu, dass die maximale Dateigröße schneller erreicht wird.

  • InnoDB-Tabellen nutzen den im Tablespace vorhandenen Speicherplatz gemeinsam. Das Hinzufügen von Indizes führt also zu einer schnelleren Erschöpfung des Tablespace. Allerdings können Sie, wenn Sie auf der Festplatte noch über Speicherkapazität verfügen, den Tablespace durch das Hinzufügen neuer Komponenten erweitern (anders als bei Dateien für ISAM-, MyISAM- und BDB-Tabellen ist der InnoDB-Tablespace nicht an die Dateigrößenbegrenzung Ihres Betriebssystems gebunden, da er aus mehreren Dateien bestehen kann).

Zweitens beschleunigen Indizes zwar die Suche, verlangsamen aber Einfüge- und Löschoperationen ebenso wie die Aktualisierung von Werten in indizierten Spalten (d.h. die meisten Operationen, bei denen etwas geschrieben wird), weil beim Schreiben jetzt nicht nur die Datenzeile berücksichtigt werden muss, sondern häufig auch der Index. Je mehr Indizes eine Tabelle hat, desto größer ist die durchschnittliche Performance-Verschlechterung für Schreiboperationen. Im Teil 4 der Artikelserie finden Sie detaillierte Informationen zu diesen Performance-Problemen und Hinweise dazu, was Sie dagegen tun können.