SQL Server Indizes
Inhaltsverzeichnis
Indizes beschleunigen Abfragen in SQL Server erheblich, doch falsche Einstellungen können das Gegenteil bewirken. In diesem Beitrag erfahren Sie, wie Sie passende Indizes auswählen, erzeugen und pflegen. So setzen Sie Ihr Datenbank‑Potenzial optimal frei.
Ein Index funktioniert wie das Inhaltsverzeichnis eines Buches: Er führt den Server direkt zur gesuchten Information, statt jede Seite prüfen zu müssen. Ohne Index liest SQL Server alle Zeilen einer Tabelle – das kostet Zeit und I/O‑Ressourcen. Mit einem passenden Index sinkt die Anzahl gelesener Seiten auf das notwendige Minimum; CPU und Arbeitsspeicher werden entlastet.
Sie profitieren doppelt: Abfragen reagieren schneller, und parallele Sessions blockieren sich seltener, weil sie kürzer laufen. Analysieren Sie daher zuerst das Abfrageprofil Ihrer Anwendung. Prüfen Sie, welche Spalten häufig in WHERE‑, JOIN‑ und ORDER BY‑Klauseln vorkommen, und legen Sie dort gezielt Indizes an. Verwenden Sie das Abfrage‑Ausführungsdiagramm, um Index Scan in Index Seek umzuwandeln, und messen Sie sofort, ob Ihr neuer Index einen Vorteil bringt.
Ein Clustered Index bestimmt die physische Sortierung der Datenzeilen in der Tabelle. Jede Tabelle kann genau einen Clustered Index besitzen, weil die Daten nur einmal gespeichert werden. Wählen Sie daher einen Schlüssel, der eindeutig, stabil und möglichst schmal ist. Häufig eignet sich eine künstliche Identitätsspalte oder ein GUID‑Wert – verwenden Sie dabei vorzugsweise NEWSEQUENTIALID() statt zufällig generierter GUIDs, um Fragmentierung zu vermeiden.Achten Sie darauf, dass der Clustered‑Schlüssel nicht regelmäßig aktualisiert wird; jede Änderung verschiebt sonst ganze Datenzeilen.
Ein gut gewählter Clustered Index beschleunigt Bereichsabfragen (BETWEEN) und Sortierungen, weil die Daten bereits in der richtigen Reihenfolge vorliegen. Gleichzeitig bildet er die physische Basis für alle Non‑Clustered‑Indizes, denn diese enthalten seine Schlüsselwerte. Legen Sie den Clustered Index möglichst früh im Lebenszyklus der Tabelle fest – ein späteres Ändern ist aufwendig.
Ein Non‑Clustered Index legt eine separate B‑Baum‑Struktur an, die nur die indexierten Spalten plus den Clustered‑Schlüssel enthält. Dadurch können Sie mehrere Suchpfade zu derselben Tabelle definieren, ohne die physische Reihenfolge der Daten zu ändern. Platzverbrauch und Pflegeaufwand steigen zwar, doch Sie gewinnen Geschwindigkeit bei Abfragen, die andere Spalten filtern oder sortieren.
Ordnen Sie die Spalten im Schlüssel so an, dass Gleichheitsprädikate zuerst und Range‑Prädikate danach stehen; zudem sollte die selektivste Spalte möglichst weit vorne liegen, um die Treffergenauigkeit zu erhöhen.
Verwenden Sie außerdem INCLUDE‑Spalten, wenn eine Abfrage zusätzliche Felder zurückliefert: Dann findet der Server sämtliche benötigten Werte im Index und muss nicht zur Datenseite springen. Vermeiden Sie jedoch überbreite Indexschlüssel, weil sie mehr Arbeitsspeicher binden und längere Rebuild‑Zeiten verursachen. Analysieren Sie regelmäßig die Missing‑Index‑DMVs (z. B. sys.dm_db_missing_index_details, _groups, _columns), prüfen Sie aber jede Empfehlung kritisch, bevor Sie sie umsetzen.
Ein Covering Index deckt eine Abfrage vollständig ab, weil er alle referenzierten Spalten enthält; Key Lookups entfallen. Das spart I/O und verkürzt Latenzen. Um eine Abfrage zu „covern“, nehmen Sie die Filter‑ und Join‑Spalten in den Schlüssel und die übrigen benötigten Spalten als INCLUDE‑Felder auf. Achten Sie darauf, nur wirklich relevante Spalten aufzunehmen; sonst wächst der Index unnötig.
Für wichtige Reporting‑Statements, die große Tabellen regelmäßig scannen, entfaltet ein Covering Index enorme Wirkung. Testen Sie die Abfrage vor und nach dem Anlegen und vergleichen Sie die Metriken Logical Reads und Elapsed Time. Dokumentieren Sie den Zweck jedes Covering Index in Ihrer Versionsverwaltung, damit künftige Teammitglieder verstehen, warum er existiert und wann er angepasst werden muss.
Viele Einsteiger erstellen vorschnell Indizes auf jede Spalte, die in einer Fehlermeldung oder im Abfrageplan auftaucht. Das führt zu doppelten Strukturen, erhöhter Fragmentierung und längeren Backup‑Zeiten. Ein weiterer Fehler ist es, ausschließlich der Automatik zu überlassen, Statistiken aktuell zu halten; bei stark wachsenden Tabellen feuert die automatische Aktualisierung unter Umständen zu spät. Aktivieren Sie zusätzlich AUTO_UPDATE_STATISTICS_ASYNC oder planen Sie regelmäßige UPDATE STATISTICS‑Jobs ein.
Legen Sie keine Indizes während Bulk‑Loads an, weil jeder INSERT gleichzeitig alle Indizes aktualisiert. Deaktivieren Sie nicht benötigte Indizes für die Dauer des Imports, verwenden Sie TABLOCK und CHECK_CONSTRAINTS, und geben Sie – falls möglich – die Sortierreihenfolge per ORDER‑Hinweis beim BULK INSERT an, um minimal‑loggend zu laden. Behalten Sie Änderungen an der Datenverteilung im Blick; ein Index, der heute hilft, kann morgen überflüssig sein. Führen Sie daher periodische Leistungstests durch und dokumentieren Sie Ihre Ergebnisse.
Ein sauberer Wartungsplan hält Ihre Indizes leistungsfähig. Überwachen Sie zunächst die Fragmentierung mithilfe von sys.dm_db_index_physical_stats.
Aktualisieren Sie Statistiken regelmäßig, damit der Optimizer auf frische Kardinalitätsschätzungen zugreifen kann. Kombinieren Sie diese Aufgaben in einem Wartungsskript, das nachts oder bei geringer Last läuft. Zeichnen Sie Laufzeiten und I/O‑Verbrauch auf und passen Sie die Schwellenwerte an, wenn sich die Datenmenge stark verändert. Prüfen Sie außerdem das Error‑Log auf Warnungen wie Missing Statistics, um proaktiv zu reagieren – so stellen Sie sicher, dass Ihre sorgfältig designten Indizes langfristig ihren Geschwindigkeitsvorteil behalten.
Motherboard – das leistet die Hardwarekomponente Das Wort „Motherboard“ lässt sich mit „Hauptplatine“ ins Deutsche…
OneNote leicht gemacht – hilfreiche Kniffe für den Alltag Microsoft OneNote begleitet Sie als digitales…
VLAN – die wichtigsten Informationen im Überblick Fast jeder Anwender weiß, was ein WLAN ist.…
Mausrad-Geschwindigkeit anpassen – mehrere Wege führen zum Ziel Ein träge scrollendes Dokument kann genauso lästig…
Deepfakes in 2025 – die Tendenz zeigt nach oben Die Zahl täuschend echter KI-Fälschungen nimmt…
Microsoft bringt Recall zurück – EU-Nutzer müssen weiter warten Mit dem Windows 11-Update 24H2 nimmt…