MB Dev .tech
Registrieren Login

SQL · Index & Performance

← Zurück zu SQL Basics

Wenn Tabellen größer werden, entscheidet Performance, ob eine Anwendung sich „flüssig“ oder „träge“ anfühlt. Indizes sind dabei eines der wichtigsten Werkzeuge in SQL.

Merke
Ein Index ist wie ein Inhaltsverzeichnis

Statt jede Zeile zu durchsuchen, springt die Datenbank gezielt zu den passenden Stellen.

1) Wann wird Performance ein Problem?

Am Anfang merkt man oft nichts: Eine Tabelle mit 100 oder 1.000 Zeilen ist schnell durchsucht. Aber bei 100.000 oder Millionen Zeilen wird jede unnötige Suche teuer.

Typische Anzeichen:

  • Listen laden spürbar langsam
  • Suchen dauern mehrere Sekunden
  • Server-Last steigt stark an

2) Was ist ein Index?

Ein Index ist eine zusätzliche Datenstruktur, die der Datenbank hilft, Zeilen schneller zu finden. Er wird auf einer oder mehreren Spalten angelegt.

Beispiel: Wenn du oft nach email suchst, lohnt sich ein Index auf dieser Spalte.

Index anlegen

CREATE INDEX idx_customers_email
ON customers (email);
Merke
Indexe beschleunigen SELECTs

Vor allem WHERE, JOIN und ORDER BY profitieren von passenden Indizes.

3) Ohne Index vs. mit Index (gedanklich)

Ohne Index muss die Datenbank jede Zeile prüfen: „Passt diese? Nein. Passt diese? Nein…“ Das nennt man Full Table Scan.

Mit Index kann sie direkt zu den passenden Einträgen springen. Das spart enorm viel Arbeit.

Tipp
Primärschlüssel sind automatisch indiziert

PRIMARY KEY und meist auch UNIQUE erzeugen automatisch einen Index.

4) Welche Spalten sollte man indexieren?

Gute Kandidaten für Indizes sind Spalten, die häufig genutzt werden in:

  • WHERE-Bedingungen
  • JOIN-Bedingungen
  • ORDER BY
  • GROUP BY

Schlechte Kandidaten sind Spalten mit sehr wenigen unterschiedlichen Werten (z.B. is_active mit nur 0/1).

Achtung
Zu viele Indizes sind auch schlecht

Jeder Index kostet Speicher und verlangsamt INSERT/UPDATE/DELETE, weil der Index mitgepflegt werden muss.

5) Zusammengesetzte (mehrspaltige) Indizes

Manchmal sucht man fast immer nach der Kombination mehrerer Spalten, z.B. customer_id und created_at. Dann kann ein kombinierter Index sinnvoll sein.

Mehrspaltiger Index

CREATE INDEX idx_orders_customer_date
ON orders (customer_id, created_at);
Merke
Reihenfolge der Spalten ist wichtig

Der Index hilft zuerst bei customer_id, dann bei created_at – nicht automatisch umgekehrt.

6) Performance-Denken für Einsteiger

  • Erst korrekt, dann schnell
  • SELECTs analysieren, bevor man optimiert
  • Indizes gezielt und bewusst setzen
  • „Blindes Indexieren“ vermeiden
Tipp
Performance ist kein Hexenwerk

Die größten Gewinne kommen oft von wenigen, gut platzierten Indizes – nicht von komplizierten Tricks.

Wie geht es weiter?

Jetzt weißt du, warum Datenbanken schnell oder langsam sein können. Im nächsten Schritt kümmern wir uns um Konsistenz und Sicherheit bei Änderungen: Transaktionen und Locking.

Nächster Schritt
Transaktionen & Locking

Damit stellen wir sicher, dass mehrere Änderungen entweder komplett oder gar nicht gespeichert werden.