0Pricing
SQL Interview Prep · Lektion

B-Tree-Indizes und ihr Nutzen

Was ein Index tatsächlich speichert und welche Vorgänge er beschleunigt.

B-Tree-Indizes und ihr Nutzen ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 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 Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Warum Interviewer nach Indizes fragen

Wenn ein Interviewer sagt: „Diese Abfrage ist langsam – was tun Sie?“, erwartet er fast immer eine Antwort, in der ein Index vorkommt. Indizes sind der wichtigste Hebel für die Leseperformance. Deshalb unterscheiden sie Kandidaten, die sich nur Syntax gemerkt haben, von Kandidaten, die verstehen, wie eine Datenbank tatsächlich Zeilen findet.

In dieser Lektion entwickeln Sie ein präzises mentales Modell des B-Tree-Indexes: Was er speichert, welche Operationen er beschleunigt und wie Sie darüber wie ein Senior Engineer sprechen.

Das Problem, das ein Index löst

Ohne Index muss die Datenbank jede Zeile der Tabelle lesen, um Zeilen zu finden, die eine Bedingung erfüllen. Das ist ein sequenzieller Scan (oder vollständiger Tabellenscan). Bei einer Tabelle mit einer Million Zeilen bedeutet das eine Million Prüfungen, selbst wenn nur eine Zeile passt.

Ein Index ist eine separate, sortierte Datenstruktur, mit der die Engine direkt zu den passenden Zeilen springen kann – genauso wie Sie mithilfe eines Stichwortverzeichnisses ein Thema finden, ohne jede Seite eines Buches zu lesen.

-- No index: the engine reads ALL rows to find this one
SELECT * FROM users WHERE email = 'ada@example.com';

Was ein B-Tree tatsächlich speichert

Der Standardindex in PostgreSQL, MySQL, SQL Server und den meisten anderen Engines ist ein B-Tree (balancierter Baum). Er speichert die Werte der indizierten Spalte in sortierter Reihenfolge, organisiert in einem flachen Baum aus Seiten.

  • Jeder Blattknoten enthält Indexschlüssel sowie einen Zeiger auf die tatsächliche Tabellenzeile.
  • Der Baum bleibt balanciert, sodass jeder Lookup unabhängig von der Tabellengröße nur wenige Seiten berührt.

Ein Lookup geht in ungefähr log(N) Schritten von der Wurzel bis zu einem Blatt, statt alle N Zeilen zu durchsuchen.

Ihren ersten Index erstellen

Sie erstellen einen B-Tree-Index mit CREATE INDEX. Benennen Sie ihn aussagekräftig, damit ein Reviewer Tabelle und Spalten auf einen Blick erkennt.

Sobald dieser Index vorhanden ist, kann eine Abfrage, die nach email filtert, damit die passende Zeile in wenigen Seitenzugriffen finden, statt einen vollständigen Scan durchzuführen.

CREATE INDEX idx_users_email ON users (email);

-- Now this lookup uses the index instead of scanning
SELECT * FROM users WHERE email = 'ada@example.com';

Operationen, die ein B-Tree beschleunigt

Da ein B-Tree Werte sortiert hält, beschleunigt er weit mehr als nur exakte Treffer. Interviewer freuen sich, wenn Sie diese Punkte präzise aufzählen:

  • Gleichheit: WHERE email = ?
  • Bereiche: WHERE age > 30, BETWEEN, <, >=
  • Präfixsuche: WHERE name LIKE 'Ada%' (aber nicht '%da')
  • ORDER BY auf der indizierten Spalte, wodurch eine Sortierung vermieden wird
  • MIN/MAX, da diese an den Enden der sortierten Struktur liegen

Durchgespieltes Beispiel: Bereichsabfrage

Betrachten Sie eine orders-Tabelle mit Millionen von Zeilen. Eine Reporting-Abfrage fragt nach aktuellen Bestellungen. Mit einem Index auf created_at springt die Engine im sortierten Index zum Beginn des Bereichs und geht nur so weit vor, wie es nötig ist.

Der Index verwandelt einen vollständigen Tabellenscan in einen begrenzten Bereichsscan, der nur den passenden Ausschnitt liest.

CREATE INDEX idx_orders_created_at ON orders (created_at);

SELECT order_id, total
FROM orders
WHERE created_at >= '2026-01-01'
  AND created_at <  '2026-02-01';

Indizes helfen auch beim Sortieren

Ein häufig übersehener Punkt: Da der Index bereits sortiert ist, kann die Engine Zeilen in Indexreihenfolge zurückgeben und einen separaten Sortierschritt überspringen. Das ist für ORDER BY und besonders für die Top-N-Paginierung wichtig.

Wenn Sie nach einer Spalte sortieren, für die ein passender Index existiert, kann der Optimizer den Index in der richtigen Reihenfolge lesen und frühzeitig stoppen, sobald er genügend Zeilen gefunden hat.

-- Index on created_at lets this avoid a sort and stop after 10 rows
SELECT order_id, total
FROM orders
ORDER BY created_at DESC
LIMIT 10;

Die verborgenen Kosten: der Heap-Fetch

Ein normaler B-Tree-Index speichert nur die indizierte Spalte sowie einen Zeiger auf die Zeile. Nachdem die Engine passende Einträge gefunden hat, muss sie daher weiterhin zur Tabelle (dem Heap) gehen, um die anderen ausgewählten Spalten zu lesen.

Dieser zweite Zugriff ist der Heap-Fetch. Für wenige Zeilen ist er günstig, bei vielen passenden Zeilen jedoch teuer. Das ist ein Grund dafür, dass ein Index mit geringer Selektivität manchmal ignoriert wird. (Später sehen Sie, wie Covering-Indizes dieses Problem lösen.)

Bestätigen, dass der Index verwendet wird

Behaupten Sie niemals, dass ein Index verwendet wird – belegen Sie es mit EXPLAIN. Wenn Sie im Interview den Plan erläutern, zeigen Sie echtes Verständnis.

  • Seq Scan bedeutet, dass der Index NICHT verwendet wurde.
  • Index Scan oder Index Seek bedeutet, dass er verwendet wurde.

Wenn Sie einen Index hinzugefügt haben, aber weiterhin einen sequenziellen Scan sehen, hat der Planer den Scan als günstiger bewertet – häufig, weil die Abfrage einen zu großen Anteil der Tabelle trifft.

EXPLAIN
SELECT * FROM users WHERE email = 'ada@example.com';
-- Look for: Index Scan using idx_users_email

Primärschlüssel sind bereits indiziert

Eine häufige Fangfrage im Interview: Das Deklarieren eines PRIMARY KEY oder einer UNIQUE-Bedingung erstellt automatisch einen unterstützenden B-Tree-Index. Sie müssen und sollten keinen zweiten Index für dieselbe Spalte hinzufügen.

Deshalb sind Joins und Lookups über Primärschlüssel bereits schnell. Die Frage „Soll ich für die id-Spalte einen Index anlegen?“ ist daher meistens eine Falle – das wurde bereits für Sie erledigt.

-- This already builds a unique B-Tree index on (id)
CREATE TABLE users (
  id    BIGINT PRIMARY KEY,
  email TEXT UNIQUE
);

So formulieren Sie es im Interview

Fassen Sie alles in einem klaren Satz zusammen, dem ein Interviewer leicht zustimmen kann:

„Ein B-Tree-Index ist eine sortierte, balancierte Struktur, mit der die Engine Zeilen in log(N) Seitenzugriffen findet, statt die gesamte Tabelle zu durchsuchen. Er beschleunigt Gleichheits-, Bereichs-, Präfix- und ORDER-BY-Operationen auf den indizierten Spalten, aber jeder Treffer verursacht weiterhin einen Heap-Fetch für nicht indizierte Spalten.“

Belegen Sie diese Aussage anschließend mit EXPLAIN. Diese Kombination aus Modell und Belegen bringt die entscheidenden Punkte.

Kurztest

Testen Sie Ihr mentales Modell dazu, welche Operationen ein B-Tree-Index beschleunigt.

Zusammenfassung: B-Tree-Indizes

Die wichtigsten Erkenntnisse für die nächste Lektion:

  • Ein B-Tree speichert indizierte Werte sortiert in einem balancierten Baum und ermöglicht Lookups in log(N).
  • Er beschleunigt Gleichheitsabfragen, Bereichsabfragen, Präfixabfragen (führendes LIKE), ORDER BY und MIN/MAX.
  • Jeder Treffer erfordert weiterhin einen Heap-Fetch für Spalten, die nicht im Index enthalten sind.
  • Das Einschließen einer Spalte in eine Funktion oder die Verwendung eines führenden Wildcards deaktiviert den Index.
  • Überprüfen Sie immer mit EXPLAIN; PRIMARY KEY und UNIQUE-Bedingungen erstellen automatisch einen Index.

Als Nächstes: Wie Sie die Spaltenreihenfolge festlegen, wenn ein Index mehrere Spalten gleichzeitig abdeckt.

Häufig gestellte Fragen

Ist die Lektion „B-Tree-Indizes und ihr Nutzen“ kostenlos?

Ja — der vollständige Text von „B-Tree-Indizes und ihr Nutzen“ 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 Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „B-Tree-Indizes und ihr Nutzen“?

Was ein Index tatsächlich speichert und welche Vorgänge er beschleunigt. Du übst SQL Interview Prep 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 Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. SQL Interview Prep 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 1 von 4.

Wie lange dauert die Lektion „B-Tree-Indizes und ihr Nutzen“?

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 Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede SQL Interview Prep-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. B-Tree-Indizes und ihr Nutzen
  2. Spaltenreihenfolge in zusammengesetzten Indizes
  3. Abdeckende Indizes und Index-Only-Scans
  4. Wann Indizes schaden: Schreibvorgänge und Selektivität
← Zurück zu SQL Interview Prep