0Pricing
SQL Academy · Lektion

Indizes für häufige Abfragen

Fügen Sie Indizes für die wichtigsten Abfragen hinzu: nach Benutzer, Datum und Fremdschlüssel — und messen Sie die Auswirkungen mit EXPLAIN.

Indizes für häufige Abfragen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Index?

Ein Index ist eine separate Datenstruktur auf dem Datenträger, mit der die Datenbank Zeilen anhand eines Spaltenwerts finden kann, ohne die gesamte Tabelle zu durchsuchen. Die klassische Implementierung ist ein B-Baum.

Indizes tauschen Schreibvorgänge gegen Lesevorgänge

Jeder Index macht INSERT/UPDATE/DELETE geringfügig langsamer (auch der Index muss aktualisiert werden). Legen Sie keine Indizes an, die Sie nicht benötigen.

Primärschlüssel erhalten automatisch einen Index

Durch die Deklaration von PRIMARY KEY wird automatisch ein eindeutiger B-Baum-Index erstellt. Dasselbe gilt für UNIQUE-Spalten.

Indizieren Sie Fremdschlüsselspalten

PostgreSQL erstellt für die untergeordnete Seite eines Fremdschlüssels KEINEN automatischen Index. Legen Sie immer einen an – ohne ihn wird beim Löschen eines übergeordneten Datensatzes das gesamte untergeordnete Datenvolumen durchsucht:

CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);

Indizieren Sie in WHERE verwendete Spalten

Wenn Sie häufig nach created_at filtern, indizieren Sie die Spalte:

CREATE INDEX posts_created_at_idx ON posts(created_at DESC);

-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;

Zusammengesetzte Indizes

Für Filter über mehrere Spalten kann ein zusammengesetzter Index deutlich schneller sein als zwei Einzelspaltenindizes:

CREATE INDEX posts_author_published_idx
  ON posts(author_id, published_at DESC);

-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;

Regel für das Präfix von links

Ein zusammengesetzter Index (a, b, c) kann WHERE a = ? und WHERE a = ? AND b = ? bedienen – aber NICHT allein WHERE b = ?. Die Reihenfolge ist entscheidend.

Partielle Indizes

Indizieren Sie nur die Zeilen, die Sie abfragen:

-- Only published posts:
CREATE INDEX posts_published_idx
  ON posts(published_at DESC)
  WHERE published_at IS NOT NULL;

-- Smaller index, faster lookups for the common case.

Ausdrucksindizes

Indizieren Sie eine Funktion einer Spalte:

CREATE INDEX users_email_lower_idx ON users(LOWER(email));

-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);

Indizieren Sie nicht übermäßig

Faustregeln:

  • Primärschlüssel indizieren ✓ (automatisch)
  • UNIQUE-Spalten indizieren ✓ (automatisch)
  • Fremdschlüsselspalten indizieren ✓
  • Spalten indizieren, die in WHERE / JOIN / ORDER BY Ihrer häufig verwendeten Abfragen vorkommen
  • Spalten mit sehr geringer Selektivität nicht indizieren (z. B. einen Boolean-Wert mit einer 50/50-Verteilung)

Mit EXPLAIN messen

Führen Sie vor und nach dem Hinzufügen eines Index EXPLAIN ANALYZE aus, um zu überprüfen, ob der Abfrageplaner ihn verwendet:

EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;

Zusammenfassung

Für unseren Blog: Indizieren Sie die Fremdschlüssel (post_id in comments, author_id in posts und comments) sowie (author_id, published_at DESC) in posts für Abfragen nach den „neuesten Beiträgen eines Benutzers“.

Kurzer Test

Sie haben den Fremdschlüssel orders.user_id REFERENCES users(id) hinzugefügt. Welchen Index sollten Sie gegebenenfalls erstellen?

Häufig gestellte Fragen

Ist die Lektion „Indizes für häufige Abfragen“ kostenlos?

Ja — der vollständige Text von „Indizes für häufige Abfragen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Indizes für häufige Abfragen“?

Fügen Sie Indizes für die wichtigsten Abfragen hinzu: nach Benutzer, Datum und Fremdschlüssel — und messen Sie die Auswirkungen mit EXPLAIN. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Indizes für häufige Abfragen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare
  2. Schlüssel und Datentypen auswählen
  3. Indizes für häufige Abfragen
  4. Die Datenbank mit Testdaten befüllen
← Zurück zu SQL Academy