Vorwort — Warum Entwickler indizieren müssen
Anatomie eines Indexes — Wie sieht ein SQL Index aus?
Die Blätter — Eine doppelt verkettete Liste
Der B-Tree — Ein ausbalancierter Baum
Langsame Indizes, Teil I — Zwei Zutaten machen den Index langsam
Die Where-Klausel — Die Suchgeschwindigkeit verbessern
Der Gleicheheitsoperator — Exakte Bedingungen
Primärschlüssel — Indexnutzung kontrollieren
Zusammengesetzte Schlüssel — Mehrspaltige Indizes
Langsame Indizes, Teil II — Die erste Zutat, nochmals
Funktionen — Funktionen in der
where
-KlauselGroß- und Kleinschreibung ignorieren —
UPPER
undLOWER
Benutzerdefinierte Funktionen — Grenzen der Indizierbarkeit
Über-Indizierung — Vermeide Redundanzen
Parametrisierte Abfragen — Für Sicherheit und Performance
Nach Bereichen Suchen — Jenseits der Gleichheit
Größer, Kleiner und
BETWEEN
— Beachte die SpaltenreihenfolgeSQL
LIKE
Filter Indizieren —LIKE
ist keine VolltextsucheIndizes kombinieren — Warum nicht einen Index für jeder Spalte?
Partielle Indizes — Ausgewählte Zeilen indizieren
NULL
in der Oracle Datenbank — Eine wichtige KuriositätNULL
im Index — Jeder Index ist ein partieller IndexNOT NULL
Constraints — beeinflussen die IndexnutzungPartielle Indizes emulieren — mit funktions-basierter Indizierung
Verstümmelte Bedingungen — Verbreitete Anti-Pattern
Datums-Typen — verursachen viele Probleme
Numerische Strings — Mische die Typen nicht
Spalten zusammenfügen — und redundante
where
-KlauselnSchlaue Logik — Der schlauste Weg SQL langsam zu machen
Mathematik — Datenbanken lösen keine Gleichungen
Performance und Skalierbarkeit — Über Hardware
Das Datenvolumen — Schlampige Indizierung schlägt zurück
Die Systemlast — Die Zugriffsrate beeinflusst die Antwortzeit
Antwortzeit und Durchsatz — Horizontale Skalierbarkeit
Die Join Operation — Nicht unbedingt langsam
Nested Loops – verschachtelte Schleifen — Das ORM N+1 Problem
Hash Join — Benötigt eine völlig andere Indizierung
Sort-Merge Join — Wie ein Zipverschluss auf sortierten Daten
Daten-Cluster — Daten Zusammenlegen: die zweite Macht
Index-Filterprädikate gezielt einsetzten —
LIKE
tunenIndex-Only Scan – Den Tabellenzugriff vermeiden
Index-organisierte Tabellen – Clustered Indizes ohne Tabelle
Sortieren und Gruppieren — Pipelined
order by
: die dritte MachtIndexed Order By — im Zusammenspiel mit der
where
-KlauselASC
/DESC
undNULLS FIRST
/LAST
— die Indexreihenfolge ändernIndexed Order By — Gruppierung am „Fließband“
Teilergebnisse — Effizientes blättern
Top-N Zeilen abfragen — wenn man nur die ersten paar Zeilen braucht
Die nächste Seite laden — die Offset- und Seek-Methoden im Vergleich
Window-Funktionen — mit analytischen Funktionen blättern
Insert, Delete und Update — Wie sich Indizierung auf DML auswirkt
Hinweis in eigener Sache
Ich biete SQL Schulungen, Optimierung und Beratung an. Auch der Kauf meines Buches „SQL Performance Explained“ (ab €9,95) unterstützt meine Arbeit an dieser Webseite.
Ausführungspläne — Ausführungspläne holen und lesen
DB2 LUW : Erstellen • Operationen • Zugriffs- und Filterprädikate
MySQL : Erstellen • Operationen • Zugriffs- und Filterprädikate
Oracle : Erstellen • Operationen • Zugriffs- und Filterprädikate
PostgreSQL : Erstellen • Operationen • Zugriffs- und Filterprädikate
SQL Server : Erstellen • Operationen • Zugriffs- und Filterprädikate
Mythen-Verzeichnis — Verbreitete Mythen und Irrglauben
Beispiel Schema —
CREATE
undINSERT
SkriptsGlossar — Die wichtigsten Datenbankbegriffe kurz erklärt