Share via


Platzieren von Indizes in Dateigruppen

Bei der Entwicklung einer Indexentwurfsstrategie sollten Sie die Platzierung der Indizes in den Dateigruppen berücksichtigen, die der Datenbank zugeordnet sind. Das sorgfältige Auswählen der Dateigruppe oder des Partitionsschemas kann die Abfrageleistung verbessern.

Standardmäßig werden Indizes in derselben Dateigruppe wie die Basistabelle gespeichert, für die der Index erstellt wird. Ein nicht partitionierter, gruppierter Index und die Basistabelle befinden sich immer in der gleichen Dateigruppe. Sie können jedoch folgende Aktionen ausführen:

  • Erstellen nicht gruppierter Indizes in einer anderen Dateigruppe als in der Dateigruppe der Basistabelle.
  • Partitionieren von gruppierten und nicht gruppierten Indizes, damit diese mehrere Dateigruppen umfassen.
  • Verschieben einer Tabelle aus einer Dateigruppe in eine andere durch Löschen des gruppierten Index und Angeben einer neuen Dateigruppe oder eines Partitionsschemas in der MOVE TO-Klausel der DROP INDEX-Anweisung oder durch Verwenden der CREATE INDEX-Anweisung mit der DROP_EXISTIN-Klausel.

Wird der nicht gruppierte Index in einer anderen Dateigruppe erstellt, können Leistungsvorteile erzielt werden, wenn die Dateigruppen verschiedene physikalische Laufwerke mit eigenen Controllern verwenden. Daten und Indexinformationen können dann parallel von mehreren Leseköpfen gelesen werden. Werden beispielsweise Table_A in Dateigruppe f1 und Index_A in Dateigruppe f2 von derselben Abfrage verwendet, werden Leistungsvorteile erzielt, da beide Dateigruppen konfliktfrei vollständig verwendet werden können. Wenn die Abfrage jedoch Table_A scannt, ohne auf Index_A zu verweisen, so wird nur Dateigruppe f1 verwendet. In diesem Fall ist kein Leistungsgewinn zu verzeichnen.

Da jedoch nicht vorhersehbar ist, zu welchem Zeitpunkt welche Zugriffsart erfolgt, ist die Entscheidung für das Verteilen der Tabellen und Indizes auf alle Dateigruppen häufig die bessere Lösung. So ist sichergestellt, dass unabhängig von der Art des Datenzugriffs auf alle Platten zugegriffen wird, da alle Daten und Indizes gleichmäßig auf alle Platten verteilt sind. Diese Lösung ist auch aus Systemadministratorensicht einfacher.

Partitionen über mehrere Dateigruppen

Sie können auch das Partitionieren von gruppierten und nicht gruppierten Indizes über mehrere Dateigruppen hinweg in Betracht ziehen. Partitionierte Indizes werden horizontal oder nach Zeile basierend auf einer Partitionsfunktion partitioniert. Die Partitionsfunktion definiert, wie jede einzelne Zeile einer Gruppe von Partitionen auf der Grundlage der Werte bestimmter Spalten zugeordnet wird, die als Partitionierungsspalten bezeichnet werden. Ein Partitionsschema gibt die Zuordnung dieser Partitionen zu einer Sammlung von Dateigruppen an.

Das Partitionieren eines Indexes kann die folgenden Vorteile bieten:

  • Bereitstellen skalierbarer Systeme, die die Verwaltbarkeit großer Indizes vereinfachen. OLTP-Systeme können z. B. partitionsabhängige Anwendungen implementieren, die große Indizes verwalten können.
  • Schnellere und effizientere Ausführung von Abfragen. Wenn Abfragen auf mehrere Partitionen eines Indexes zugreifen, kann der Abfrageoptimierer einzelne Partitionen gleichzeitig verarbeiten und Partitionen ausschließen, die nicht von der Abfrage betroffen sind.

Weitere Informationen finden Sie unter Partitionierte Tabellen und Indizes.

So erstellen Sie einen neuen Index in einer bestimmten Dateigruppe

CREATE INDEX

So verschieben Sie einen vorhandenen Index oder eine vorhandene Tabelle in eine andere Dateigruppe

Vorgehensweise: Verschieben eines vorhandenen Indexes in eine andere Dateigruppe (SQL Server Management Studio)

DROP INDEX MOVE TO

CREATE INDEX WITH DROP_EXISTING

Siehe auch

Konzepte

Allgemeine Richtlinien zum Indexentwurf
Grundlagen des Indexentwurfs
Physikalische Datenbankdateien und Dateigruppen
Grundlegendes zu Dateien und Dateigruppen

Hilfe und Informationen

Informationsquellen für SQL Server 2005