T-SQL - Indizes

Indexessind spezielle Nachschlagetabellen, mit denen die Datenbanksuchmaschine den Datenabruf beschleunigen kann. Einfach gesagt, einindexist ein Zeiger auf Daten in einer Tabelle. Ein Index in einer Datenbank ist einem Index am Ende eines Buches sehr ähnlich.

Wenn Sie beispielsweise auf alle Seiten in einem Buch verweisen möchten, die ein bestimmtes Thema behandeln, verweisen Sie zuerst auf den Index, in dem alle Themen alphabetisch aufgelistet sind, und verweisen dann auf eine oder mehrere bestimmte Seitenzahlen.

Ein Index beschleunigt SELECT-Abfragen und WHERE-Klauseln, verlangsamt jedoch die Dateneingabe mit den Anweisungen UPDATE und INSERT. Indizes können ohne Auswirkung auf die Daten erstellt oder gelöscht werden.

Das Erstellen eines Index umfasst die Anweisung CREATE INDEX, mit der Sie den Index benennen, die Tabelle und die zu indizierenden Spalten angeben und angeben können, ob der Index in aufsteigender oder absteigender Reihenfolge vorliegt.

Indizes können auch eindeutig sein, ähnlich wie die UNIQUE-Einschränkung, da der Index doppelte Einträge in der Spalte oder einer Kombination von Spalten verhindert, für die ein Index vorhanden ist.

Befehl CREATE INDEX

Es folgt die grundlegende Syntax von CREATE INDEX.

Syntax

CREATE INDEX index_name ON table_name

Einspaltige Indizes

Ein einspaltiger Index wird basierend auf nur einer Tabellenspalte erstellt. Es folgt die grundlegende Syntax.

Syntax

CREATE INDEX index_name 
ON table_name (column_name)

Beispiel

CREATE INDEX singlecolumnindex 
ON customers (ID)

Einzigartige Indizes

Eindeutige Indizes werden nicht nur für die Leistung, sondern auch für die Datenintegrität verwendet. Mit einem eindeutigen Index können keine doppelten Werte in die Tabelle eingefügt werden. Es folgt die grundlegende Syntax.

Syntax

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Beispiel

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Zusammengesetzte Indizes

Ein zusammengesetzter Index ist ein Index für zwei oder mehr Spalten einer Tabelle. Es folgt die grundlegende Syntax.

Syntax

CREATE INDEX index_name on table_name (column1, column2)

Beispiel

CREATE INDEX compositeindex 
on customers (NAME, ID)

Berücksichtigen Sie beim Erstellen eines einspaltigen Index oder eines zusammengesetzten Index die Spalte (n), die Sie möglicherweise sehr häufig in der WHERE-Klausel einer Abfrage als Filterbedingungen verwenden.

Sollte nur eine Spalte verwendet werden, sollte ein einspaltiger Index die Wahl sein. Sollten in der WHERE-Klausel häufig zwei oder mehr Spalten als Filter verwendet werden, ist der zusammengesetzte Index die beste Wahl.

Implizite Indizes

Implizite Indizes sind Indizes, die vom Datenbankserver automatisch erstellt werden, wenn ein Objekt erstellt wird. Indizes werden automatisch für Primärschlüsseleinschränkungen und eindeutige Einschränkungen erstellt.

DROP INDEX-Befehl

Ein Index kann mit dem Befehl MS SQL SERVER DROP gelöscht werden. Beim Löschen eines Index ist Vorsicht geboten, da die Leistung möglicherweise verlangsamt oder verbessert wird.

Syntax

Es folgt die grundlegende Syntax.

DROP INDEX tablename.index_name

Wann sollten Indizes vermieden werden?

Obwohl Indizes die Leistung von Datenbanken verbessern sollen, sollten sie manchmal vermieden werden. Die folgenden Richtlinien geben an, wann die Verwendung eines Index überdacht werden sollte -

  • Indizes sollten nicht für kleine Tabellen verwendet werden.

  • Tabellen mit häufigen Aktualisierungs- oder Einfügevorgängen für große Stapel sollten nicht indiziert werden.

  • Indizes sollten nicht für Spalten verwendet werden, die eine hohe Anzahl von NULL-Werten enthalten.

  • Häufig manipulierte Spalten sollten nicht indiziert werden.