von Markus Winand.

Alles, was Entwickler über SQL Performance wissen müssen


  1. Vorwort — Warum Entwickler indizieren müssen

  2. Anatomie eines Indexes — Wie sieht ein SQL Index aus?

    1. Die Blätter — Eine doppelt verkettete Liste

    2. Der B-Tree — Ein ausbalancierter Baum

    3. Langsame Indizes, Teil I — Zwei Zutaten machen den Index langsam

  3. Die Where-Klausel — Die Suchgeschwindigkeit verbessern

    1. Der Gleicheheitsoperator — Exakte Bedingungen

      1. Primärschlüssel — Indexnutzung kontrollieren

      2. Zusammengesetzte Schlüssel — Mehrspaltige Indizes

      3. Langsame Indizes, Teil II — Die erste Zutat, nochmals

    2. Funktionen — Funktionen in der where-Klausel

      1. Groß- und Kleinschreibung ignorieren — UPPER und LOWER

      2. Benutzerdefinierte Funktionen — Grenzen der Indizierbarkeit

      3. Über-Indizierung — Vermeide Redundanzen

    3. Parametrisierte Abfragen — Für Sicherheit und Performance

    4. Nach Bereichen Suchen — Jenseits der Gleichheit

      1. Größer, Kleiner und BETWEEN — Beachte die Spaltenreihenfolge

      2. SQL LIKE Filter Indizieren — LIKE ist keine Volltextsuche

      3. Indizes kombinieren — Warum nicht einen Index für jeder Spalte?

    5. Partielle Indizes — Ausgewählte Zeilen indizieren

    6. NULL in der Oracle Datenbank — Eine wichtige Kuriosität

      1. NULL im Index — Jeder Index ist ein partieller Index

      2. NOT NULL Constraints — beeinflussen die Indexnutzung

      3. Partielle Indizes emulieren — mit funktions-basierter Indizierung

    7. Verstümmelte Bedingungen — Verbreitete Anti-Pattern

      1. Datums-Typen — verursachen viele Probleme

      2. Numerische Strings — Mische die Typen nicht

      3. Spalten zusammenfügen — und redundante where-Klauseln

      4. Schlaue Logik — Der schlauste Weg SQL langsam zu machen

      5. Mathematik — Datenbanken lösen keine Gleichungen

  4. Performance und Skalierbarkeit — Über Hardware

    1. Das Datenvolumen — Schlampige Indizierung schlägt zurück

    2. Die Systemlast — Die Zugriffsrate beeinflusst die Antwortzeit

    3. Antwortzeit und Durchsatz — Horizontale Skalierbarkeit

  5. Die Join Operation — Nicht unbedingt langsam

    1. Nested Loops – verschachtelte Schleifen — Das ORM N+1 Problem

    2. Hash Join — Benötigt eine völlig andere Indizierung

    3. Sort-Merge Join ‌— Wie ein Zipverschluss auf sortierten Daten

  6. Daten-Cluster — Daten Zusammenlegen: die zweite Macht

    1. Index-Filterprädikate gezielt einsetzten — LIKE tunen

    2. Index-Only Scan – Den Tabellenzugriff vermeiden

    3. Index-organisierte Tabellen – Clustered Indizes ohne Tabelle

  7. Sortieren und Gruppieren — Pipelined order by: die dritte Macht

    1. Indexed Order By — im Zusammenspiel mit der where-Klausel

    2. ASC/DESC und NULLS FIRST/LAST — die Indexreihenfolge ändern

    3. Indexed Order By — Gruppierung am „Fließband“

  8. Teilergebnisse — Effizientes blättern

    1. Top-N Zeilen abfragen — wenn man nur die ersten paar Zeilen braucht

    2. Die nächste Seite laden — die Offset- und Seek-Methoden im Vergleich

    3. Window-Funktionen — mit analytischen Funktionen blättern

  9. Insert, Delete und Update — Wie sich Indizierung auf DML auswirkt

    1. Insert — kann keinen direkten Nutzen aus Indizierung ziehen

    2. Delete — nutzt Indizes für die where-Klausel

    3. Update — betrifft nicht alle Indizes der Tabelle

Wenn du diese Seite magst, magst du vielleicht auch …

… meine Newsletter bestellen, gratis Sticker erhalten, mein Buch kaufen oder an einer Schulung teilnehmen.

  1. Ausführungspläne — Ausführungspläne holen und lesen

    1. Db2 (LUW) : Erstellen • Operationen • Zugriffs- und Filterprädikate

    2. MySQL : Erstellen • Operationen • Zugriffs- und Filterprädikate

    3. Oracle : Erstellen • Operationen • Zugriffs- und Filterprädikate

    4. PostgreSQL : Erstellen • Operationen • Zugriffs- und Filterprädikate

    5. SQL Server : Erstellen • Operationen • Zugriffs- und Filterprädikate

    6. SQLite: Erstellen • Operationen

  2. Mythen-Verzeichnis — Verbreitete Mythen und Irrglauben

    1. Indizes können degenerieren

    2. Selektivste Spalte zuerst

    3. Oracle kann NULL nicht Indizieren

    4. Dynamisches SQL ist langsam

  3. Beispiel Schema — CREATE und INSERT Skripts

  4. Glossar — Die wichtigsten Datenbankbegriffe kurz erklärt

Du kannst nicht alles an einem Tag lernen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS um sukzessive aufzuholen. Und sieh dir auch modern-sql.com an.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf MastodonMarkus Winand auf Bluesky
Copyright 2010-2026 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO