Freigeben über


Löschen von Indizes

Wenn ein Index nicht mehr benötigt wird, können Sie ihn aus einer Datenbank entfernen und auf diese Weise den Speicherplatz freigeben, der zurzeit noch von dem Index verwendet wird. Beliebige Objekte in der Datenbank können diesen freigegebenen Speicherplatz anschließend verwenden. Löschen und Entfernen eines Indexes sind Synonyme.

Sie können keinen Index löschen, der von einer PRIMARY KEY- oder UNIQUE-Einschränkung verwendet wird, ohne die Einschränkung zu löschen. Wenn Sie den Index ändern, um z. B. den vom Index verwendeten Füllfaktorwert zu bearbeiten, können Sie einen Index, der von einer PRIMARY KEY- oder UNIQUE-Einschränkung verwendet wird, im Wesentlichen löschen und dann neu erstellen, ohne die Einschränkung löschen und neu erstellen zu müssen. Weitere Informationen zum Neuerstellen des Indexes finden Sie unter Neuorganisieren und Neuerstellen von Indizes.

Das Neuerstellen eines Indexes (statt ihn zu löschen und dann neu zu erstellen) eignet sich auch zum Neuerstellen eines gruppierten Indexes. Dies liegt daran, dass der Vorgang der Neuerstellung des Indexes die Anforderung zum Sortieren der Daten nach den Indexspalten überflüssig machen kann, wenn die Daten bereits in sortierter Reihenfolge vorliegen.

Indizes, die für dauerhafte oder temporäre Sichten oder Tabellen erstellt wurden, werden automatisch gelöscht, wenn die Sicht oder Tabelle gelöscht wird.

ms190691.note(de-de,SQL.90).gifHinweis:
Sie können einen Index löschen, wenn Sie die ALTER-Berechtigungen für die Tabelle besitzen.

Gruppierte Indizes

Wenn ein gruppierter Index gelöscht wird, werden die Datenzeilen, die auf der Blattebene des gruppierten Indexes gespeichert waren, in einer ungeordneten Tabelle (Heap) gespeichert. Das Löschen eines gruppierten Indexes kann zeitaufwändig sein, weil nicht nur der gruppierte Index gelöscht werden muss, sondern auch alle nicht gruppierten Indizes für die Tabelle neu erstellt werden müssen, um die Schlüssel des gruppierten Indexes durch Zeilenzeiger auf den Heap zu ersetzen. Beim Löschen aller Indizes für eine Tabelle sollten Sie zunächst die nicht gruppierten Indizes und zuletzt den gruppierten Index löschen. Auf diese Weise müssen keine Indizes neu erstellt werden. Weitere Informationen zur Beziehung zwischen gruppierten und nicht gruppierten Indizes finden Sie unter Strukturen nicht gruppierter Indizes.

Temporärer Speicherplatz ist erforderlich, um einen gruppierten Index während eines Onlinelöschvorgangs zu löschen. Gleiches gilt, wenn die MOVE TO-Klausel angegeben wird. Weitere Informationen finden Sie unter Speicherplatzanforderungen für Index-DDL-Vorgänge.

Wenn der gruppierte Index einer indizierten Sicht gelöscht wird, werden alle nicht gruppierten Indizes und automatisch erstellten Statistiken für die gleiche Sicht automatisch gelöscht. Manuell erstellte Statistiken werden nicht gelöscht.

Verwenden der MOVE TO-Klausel

In SQL Server 2005 können Sie den gruppierten Index löschen und die sich ergebende ungeordnete Tabelle (Heap) in einer einzigen Transaktion durch Angeben der MOVE TO-Option in eine andere Dateigruppe oder ein Partitionsschema verschieben. Die MOVE TO-Option weist die folgenden Einschränkungen auf:

  • Sie ist für indizierte Sichten oder nicht gruppierte Indizes unzulässig.
  • Das angegebene Partitionsschema oder die Dateigruppe muss bereits vorhanden sein.
  • Wenn MOVE TO nicht angegeben wird, wird die sich ergebende Tabelle im gleichen Partitionsschema oder in der Dateigruppe gespeichert, das bzw. die für den gruppierten Index definiert wurde.

Löschen gruppierter Indizes online

Sie können die ONLINE-Option angeben, wenn Sie einen gruppierten Index löschen. Wenn diese Option auf ON festgelegt wird, werden Abfragen und Änderungen der zugrunde liegenden Daten sowie zugehöriger nicht gruppierter Indizes von der DROP INDEX-Transaktion nicht blockiert. Weitere Informationen finden Sie unter Ausführen von Onlineindexvorgängen.

Die ONLINE-Option weist die folgenden Einschränkungen auf, wenn ON festgelegt wurde:

  • Es kann nur jeweils ein Index gleichzeitig gelöscht werden.
  • Die Option ist für deaktivierte gruppierte Indizes unzulässig.
  • Sie ist für einen gruppierten Index für eine Sicht oder nicht gruppierte Indizes für Tabellen oder Sichten unzulässig.
  • Ein gruppierter Index, der text-, ntext-, image-, varchar(max)-, nvarchar(max)-, varbinary(max)- oder xml-Spalten in den Datenzeilen der Blattebene enthält, kann nicht online gelöscht werden.

Festlegen der MAXDOP-Indexoption

In SQL Server 2005 kann die Konfigurationsoption max degree of parallelism von sp_configure für den Indexlöschvorgang außer Kraft gesetzt werden, indem die MAXDOP-Indexoption angegeben wird. Weitere Informationen finden Sie unter Konfigurieren von Parallelindexvorgänge.

Volltextindizes

Ein Index, der als Volltextschlüssel der Tabelle angegeben ist, kann nicht gelöscht werden. Zeigen Sie die Indexeigenschaften an, um zu ermitteln, ob der Index ein Volltextschlüssel ist. Weitere Informationen finden Sie unter INDEXPROPERTY (Transact-SQL).

So löschen Sie einen Index

DROP INDEX (Transact-SQL)

Vorgehensweise: Löschen eines Indexes (SQL Server Management Studio)

Beispiele

A. Löschen eines Indexes

Das folgende Beispiel löscht den Index IX_ProductVendor_VendorID in der ProductVendor-Tabelle.

USE AdventureWorks;
GO
DROP INDEX IX_ProductVendor_VendorID 
    ON Purchasing.ProductVendor;
GO

B. Löschen eines gruppierten Indexes im ONLINE-Modus

Das folgende Beispiel löscht einen gruppierten Index, wobei die ONLINE-Option auf ON festgelegt wurde. Die sich ergebende ungeordnete Tabelle (Heap) wird in der gleichen Dateigruppe gespeichert, in der auch der Index gespeichert war.

USE AdventureWorks;
GO
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate 
    ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);
GO

Siehe auch

Andere Ressourcen

DROP INDEX (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005