Ein Index beschleunigt den Datenabruf. Ohne Index durchsucht die Datenbank jede Zeile nach passenden Datensätzen. Mit Index springt sie direkt zu den relevanten Zeilen. Der Index ist eine separate Datenstruktur, die Werte Speicherorten zuordnet. Ein Buchindex funktioniert nach demselben Prinzip. Man sucht einen Begriff und findet die Seitenzahl. Man muss nicht jede Seite lesen, um ihn zu finden. Die Datenbank macht genau dasselbe.
Indizes haben ihren Preis. Sie benötigen Speicherplatz und verlangsamen Einfüge-, Aktualisierungs- und Löschvorgänge, da auch der Index aktualisiert werden muss. Jeder Schreibvorgang wird dadurch teurer. Der Vorteil liegt in den schnelleren Lesevorgängen. Bei leseintensiven Workloads sind Indizes unerlässlich. Bei schreibintensiven Workloads hingegen beeinträchtigen zu viele Indizes die Performance. Die Auswahl der zu indizierenden Spalten erfordert ein Verständnis der Abfragemuster. Spalten, die in WHERE-Klauseln, JOIN-Bedingungen und ORDER BY-Klauseln verwendet werden, eignen sich gut. Spalten mit geringer Kardinalität, wie beispielsweise ein boolescher Wert, sind weniger geeignet, da der Index die Suche nicht ausreichend einschränkt. Zusammengesetzte Indizes umfassen mehrere Spalten und können Abfragen bedienen, die nach mehreren Feldern filtern. Die Reihenfolge der Spalten in einem zusammengesetzten Index ist wichtig. Die Datenbank kann einen zusammengesetzten Index für Abfragen der führenden Spalte verwenden, jedoch nicht nur für Abfragen der nachfolgenden Spalten. Indexdesign ist ein Kompromiss. Ziel ist es, die wichtigsten Abfragen zu beschleunigen, ohne Schreibvorgänge unnötig zu verlangsamen.
Indextypen
- B-Baum – Standard für die meisten Datenbanken, gut geeignet für Bereichsabfragen
- Hash – schnelle Gleichheitsabfragen, keine Bereichsunterstützung
- Bitmap – Spalten mit geringer Kardinalität, analytische Abfragen
- Volltext – Textsuche
- Zusammengesetzt – mehrere Spalten in einem Index
Ein Index ist eine Abkürzung. Er tauscht Schreibgeschwindigkeit und Speicherplatz gegen Lesegeschwindigkeit. Verwenden Sie ihn dort, wo Lesezugriffe am wichtigsten sind.
Comments (3)
Leave a comment