Indizes

Geschätzte Lektüre: 3 Minuten 113 Ansichten

Performance verstehen und optimieren

Ein Index ist eine Datenstruktur, die den Zugriff auf Zeilen in einer Tabelle beschleunigt. Man kann sich einen Index wie das Register eines Buches vorstellen: Statt das gesamte Buch Seite für Seite zu durchsuchen, schlägt man im Register nach und findet sofort die richtige Seite.

Ohne Index muss die Datenbank bei einer Abfrage mit WHERE-Bedingung einen vollständigen Tabellenscan durchführen – sie liest jede einzelne Zeile. Bei großen Tabellen mit Millionen von Datensätzen wird dies extrem langsam.

Arten von Indizes

  • PRIMARY KEY: Wird automatisch für die Primärschlüsselspalte erstellt. Ermöglicht blitzschnellen Zugriff über die ID.
  • UNIQUE INDEX: Stellt sicher, dass alle Werte in einer Spalte eindeutig sind (wie bei der email-Spalte in kunden).
  • NORMAL INDEX: Ein Standardindex zur Beschleunigung von Abfragen.

Indizes praktisch anlegen und überprüfen

In unserer bestellsystem-Datenbank haben wir bereits implizit Indizes durch die Primärschlüssel. Für eine optimierte Performance sollten wir auch auf Fremdschlüsselspalten Indizes setzen, da diese in JOINs verwendet werden.

Index auf Fremdschlüssel anlegen:

-- Index auf kunden_id in bestellungen
CREATE INDEX idx_bestellungen_kunden_id ON bestellungen(kunden_id);

-- Index auf bestellung_id in bestellpositionen
CREATE INDEX idx_positionen_bestellung_id ON bestellpositionen(bestellung_id);

-- Index auf produkt_id in bestellpositionen
CREATE INDEX idx_positionen_produkt_id ON bestellpositionen(produkt_id);

Vorhandene Indizes anzeigen:

SHOW INDEX FROM bestellungen;

Index entfernen:

DROP INDEX idx_bestellungen_kunden_id ON bestellungen;

Wann Indizes sinnvoll sind

Indizes beschleunigen Leseoperationen (SELECT), verlangsamen jedoch Schreiboperationen (INSERT, UPDATE, DELETE), weil der Index bei jeder Änderung aktualisiert werden muss. Eine gute Index-Strategie findet die Balance.

Indizes sind besonders sinnvoll auf Spalten, die:

  • in WHERE-Klauseln verwendet werden
  • für JOINs genutzt werden (Fremdschlüssel)
  • in ORDER BY oder GROUP BY vorkommen

Nicht sinnvoll sind Indizes auf Spalten mit:

  • sehr wenigen unterschiedlichen Werten (z. B. status mit nur drei Zuständen)
  • häufigen Schreiboperationen bei gleichzeitig wenigen Leseoperationen
Dieses Dokument teilen

Indizes

Oder Link kopieren

INHALT

Abonnieren

×
Cancel