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 ignorierenUPPER 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 IndizierenLIKE 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

  1. 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

  2. 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

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

    1. Index-Filterprädikate gezielt einsetztenLIKE tunen

    2. Index-Only Scan – Den Tabellenzugriff vermeiden

    3. Index-organisierte Tabellen – Clustered Indizes ohne Tabelle

  4. 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“

  5. 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

  6. 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

Bei unseren Schlulungs-, Tuning-, und
Literaturangeboten ist für jeden was dabei

Über den Autor

Photo of Markus Winand
Markus Winand stimmt Entwickler auf SQL-Performance ein. Er hat das Buch SQL Performance Explained veröffentlicht und bietet inhouse Schulungen sowie Tuning-Leistungen auf http://winand.at/ an.