CREATE INDEX
Constraints & Struktur
Ein Index beschleunigt das Suchen in einer Tabelle – ähnlich wie das Stichwortverzeichnis hinten in einem Buch. Statt jede Zeile zu durchforsten, springt die Datenbank über den Index direkt zum Treffer. Mit CREATE INDEX legst du einen solchen Index an.
Syntax
CREATE INDEX indexname ON tabelle (spalte);
Beispiel: Suche nach Stadt beschleunigen
Suchst du oft nach Kunden aus einer bestimmten Stadt, lohnt ein Index auf Stadt:
CREATE INDEX idx_kunden_stadt ON Kunden (Stadt);
Eine Abfrage wie diese wird damit deutlich schneller:
SELECT Name FROM Kunden WHERE Stadt = 'Berlin';
Index über mehrere Spalten
Filterst du häufig nach einer Kombination, hilft ein zusammengesetzter Index:
CREATE INDEX idx_best_kunde_datum ON Bestellungen (KundenID, Bestelldatum);
UNIQUE INDEX
Ein UNIQUE INDEX beschleunigt nicht nur, sondern erzwingt zugleich Eindeutigkeit:
CREATE UNIQUE INDEX idx_kunden_email ON Kunden (Email);
Index löschen
- MySQL:
DROP INDEX idx_kunden_stadt ON Kunden; - PostgreSQL:
DROP INDEX idx_kunden_stadt; - SQL Server:
DROP INDEX idx_kunden_stadt ON Kunden;
Hinweis: Indizes kosten beim Schreiben
Ein Index ist kein kostenloses Geschenk. Bei jedem INSERT, UPDATE oder DELETE muss die Datenbank auch den Index aktualisieren. Zu viele Indizes verlangsamen also Schreibvorgänge und belegen zusätzlichen Speicher. Lege Indizes gezielt für Spalten an, nach denen du tatsächlich oft suchst oder sortierst – nicht „auf Verdacht“ für jede Spalte.