Ein Index ist eine separate sortierte Struktur, meist ein B-Baum, die Spaltenwerte auf Zeilenpositionen abbildet, damit die Engine seeken statt scannen kann. Er beschleunigt Reads, die auf diesen Spalten filtern oder sortieren. Er kostet dich bei Writes, weil jedes Insert, Update und Delete ihn pflegen muss, und er kostet Speicher. Spalten mit geringer Selektivität und Indizes, die niemand abfragt, sind meist ein Minusgeschäft.
Warum Interviewer das fragen
Indizes sind das Werkzeug mit der größten Hebelwirkung für die meisten Entwickler und gleichzeitig das, was am leichtesten blind kopiert wird. Der Interviewer prüft, ob du die Write-Seite des Trades verstehst, ob du weißt, dass die Selektivität entscheidet, ob der Planner den Index überhaupt nutzt, und ob du erklären kannst, warum jede Spalte zu indizieren keine Strategie ist. Außerdem öffnet es die Tür zum Query Planning.
So baust du deine Antwort auf
- Beschreib den Index als sortierte Lookup-Struktur mit Zeigern auf Zeilen.
- Erklär den Read-Vorteil als Seeks statt Scans.
- Benenne die Write- und Speicherkosten explizit.
- Gib einen Fall, in dem der Planner den Index trotzdem ignoriert.
Beispielantwort
Ein Index ist im Grunde eine sortierte Kopie einer oder mehrerer Spalten mit Zeigern zurück auf die Zeilen, meist ein B-Baum, damit die Engine binär suchen kann statt jede Page zu lesen. Damit wird aus einem Filter auf einer großen Tabelle statt eines Sequential Scan eine Handvoll Page Reads. Der Preis ist, dass jeder Write den Index mitpflegen muss, eine Tabelle mit acht Indizes zahlt beim Insert also achtmal, und Bulk Loads werden richtig langsam. Das andere, worauf ich achte, ist Selektivität. Wenn eine Spalte ein Boolean ist, das für neunzig Prozent der Zeilen true ist, scannt der Planner meistens einfach, weil wahlfreier Zugriff auf so viele Zeilen teurer ist als sequentiell zu lesen. Ich hatte einen Fall, in dem jemand einen Index auf eine status-Spalte mit drei Werten gelegt hat und sich überhaupt nichts verbessert hat. Geholfen hat am Ende ein zusammengesetzter Index auf tenant id und created at, passend zu Filter und Sortierung, damit die Datenbank seeken und dann in Reihenfolge lesen konnte, ohne einen separaten Sortierschritt.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Warum ist die Spaltenreihenfolge in einem zusammengesetzten Index wichtig?
- Was bringt dir ein Covering Index?
- Wie würdest du feststellen, ob der Planner deinen Index benutzt?
Weitere Fragen für Softwareentwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen