Neuorganisieren und Neuerstellen von IndizesReorganize and Rebuild Indexes

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

In diesem Artikel wird beschrieben, wie Sie einen fragmentierten Index in SQL ServerSQL Server mithilfe von SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQL neu organisieren oder erneut erstellen.This article describes how to reorganize or rebuild a fragmented index in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. SQL Server-Datenbank-EngineSQL Server Database Engine verwaltet Indizes automatisch, wenn Einfüge-, Update- oder Löschvorgänge an den zugrunde liegenden Daten vorgenommen werden.The SQL Server-Datenbank-EngineSQL Server Database Engine automatically modifies indexes whenever insert, update, or delete operations are made to the underlying data. Im Lauf der Zeit können diese Änderungen dazu führen, dass die Informationen im Index in der Datenbank verstreut (fragmentiert) werden.Over time these modifications can cause the information in the index to become scattered in the database (fragmented). Fragmentierung liegt vor, wenn Indizes über Seiten verfügen, in denen die logische Reihenfolge (basierend auf dem Schlüsselwert) nicht der physischen Reihenfolge in der Datendatei entspricht.Fragmentation exists when indexes have pages in which the logical ordering, based on the key value, does not match the physical ordering inside the data file. Hochgradig fragmentierte Indizes können die Abfrageleistung beeinträchtigen und dazu führen, dass Ihre Anwendung nur langsam reagiert.Heavily fragmented indexes can degrade query performance and cause your application to respond slowly, especially scan operations.

Sie können die Indexfragmentierung durch Neuorganisieren oder Neuerstellen eines Indexes beheben.You can remedy index fragmentation by reorganizing or rebuilding an index. Für partitionierte Indizes, die auf Grundlage eines Partitionsschemas erstellt wurden, können beide Methoden für einen vollständigen Index oder für eine einzelne Partition eines Indexes verwendet werden.For partitioned indexes built on a partition scheme, you can use either of these methods on a complete index or a single partition of an index. Beim Neuerstellen eines Indexes wird der Index gelöscht und neu erstellt.Rebuilding an index drops and re-creates the index. Bei diesem Vorgang wird die Fragmentierung entfernt, Speicherplatz wird freigegeben, indem die Seiten auf der Grundlage der angegebenen oder vorhandenen Füllfaktoreinstellung komprimiert werden, und die Indexzeilen werden in aufeinanderfolgenden Seiten neu geordnet.This removes fragmentation, reclaims disk space by compacting the pages based on the specified or existing fill factor setting, and reorders the index rows in contiguous pages. Wenn ALL angegeben ist, werden alle Indizes der Tabelle in einer einzelnen Transaktion gelöscht und neu erstellt.When ALL is specified, all indexes on the table are dropped and rebuilt in a single transaction. Das Neuorganisieren eines Indexes beansprucht minimale Systemressourcen.Reorganizing an index uses minimal system resources. Dabei wird die Blattebene von gruppierten und nicht gruppierten Indizes in Tabellen und Sichten defragmentiert, indem die Blattebenenseiten physisch neu geordnet werden, damit sie mit der logischen Reihenfolge der Blattknoten von links nach rechts übereinstimmen.It defragments the leaf level of clustered and nonclustered indexes on tables and views by physically reordering the leaf-level pages to match the logical, left to right, order of the leaf nodes. Durch das Neuorganisieren werden die Indexseiten auch komprimiert.Reorganizing also compacts the index pages. Die Komprimierung basiert auf dem vorhandenen Füllfaktorwert.Compaction is based on the existing fill factor value.

VorbereitungenBefore You Begin

Erkennen der FragmentierungDetecting Fragmentation

Der erste Schritt bei der Entscheidung für eine Defragmentierungsmethode besteht im Analysieren des Indexes, um den Fragmentierungsgrad zu ermitteln.The first step in deciding which defragmentation method to use is to analyze the index to determine the degree of fragmentation. Mithilfe der Systemfunktion sys.dm_db_index_physical_statskönnen Sie die Fragmentierung in einem bestimmten Index, allen Indizes in einer Tabelle oder indizierten Sicht, allen Indizes in einer Datenbank oder allen Indizes in allen Datenbanken erkennen.By using the system function sys.dm_db_index_physical_stats, you can detect fragmentation in a specific index, all indexes on a table or indexed view, all indexes in a database, or all indexes in all databases. Für partitionierte Indizes stellt sys.dm_db_index_physical_stats außerdem Fragmentierungsinformationen für jede Partition bereit.For partitioned indexes, sys.dm_db_index_physical_stats also provides fragmentation information for each partition.

Das durch die Funktion sys.dm_db_index_physical_stats zurückgegebene Resultset enthält die folgenden Spalten.The result set returned by the sys.dm_db_index_physical_stats function includes the following columns.

SpalteColumn und BeschreibungDescription
avg_fragmentation_in_percentavg_fragmentation_in_percent Der Prozentsatz der logischen Fragmentierung (falsche Reihenfolge der Seiten in einem Index).The percent of logical fragmentation (out-of-order pages in the index).
fragment_countfragment_count Die Anzahl der Fragmente (physisch aufeinanderfolgende Blattseiten) im Index.The number of fragments (physically consecutive leaf pages) in the index.
avg_fragment_size_in_pagesavg_fragment_size_in_pages Durchschnittliche Anzahl der Seiten in einem Fragment in einem Index.Average number of pages in one fragment in an index.

Nachdem der Grad der Fragmentierung bekannt ist, verwenden Sie die folgenden Tabelle, um die beste Methode zum Beheben der Fragmentierung zu ermitteln.After the degree of fragmentation is known, use the following table to determine the best method to correct the fragmentation.

avg_fragmentation_in_percent -Wertavg_fragmentation_in_percent value Korrigierende AnweisungCorrective statement
> 5 % und < = 30 %> 5% and < = 30% ALTER INDEX REORGANIZEALTER INDEX REORGANIZE
> 30%> 30% ALTER INDEX REBUILD WITH (ONLINE = ON) 1ALTER INDEX REBUILD WITH (ONLINE = ON) 1

1 Das Neuerstellen eines Indexes kann online oder offline erfolgen.1 Rebuilding an index can be executed online or offline. Das Neuorganisieren eines Indexes erfolgt immer online.Reorganizing an index is always executed online. Damit eine Verfügbarkeit ähnlich der Neuorganisierungsoption erreicht wird, sollten Indizes online neu erstellt werden.To achieve availability similar to the reorganize option, you should rebuild indexes online.

Tipp

Diese Werte dienen als grobe Richtlinie, um den Punkt zu bestimmen, an dem Sie zwischen ALTER INDEX REORGANIZE und ALTER INDEX REBUILD wechseln sollten.These values provide a rough guideline for determining the point at which you should switch between ALTER INDEX REORGANIZE and ALTER INDEX REBUILD. Die Istwerte können jedoch von Fall zu Fall unterschiedlich sein.However, the actual values may vary from case to case. Es ist wichtig, dass Sie experimentieren, um den besten Schwellenwert für Ihre Umgebung zu bestimmen.It is important that you experiment to determine the best threshold for your environment. Wird ein bestimmter Index beispielsweise hauptsächlich für Überprüfungsvorgänge verwendet, kann ein Entfernen der Fragmentierung die Leistung dieser Vorgänge verbessern.For example, if a given index is used mainly for scan operations, removing fragmentation can improve performance of these operations. Für Indizes, die in erster Linie für Suchvorgänge verwendet werden, fällt der Leistungsvorteil weniger auf.The performance benefit is less noticeable for indexes that are used primarily for seek operations. Ähnliches gilt für das Entfernen der Fragmentierung in einem Heap (einer Tabelle ohne gruppierten Index). Auch dies ist besonders nützlich für Überprüfungsvorgänge für nicht gruppierte Indizes, wirkt sich aber kaum auf Suchvorgänge aus.Similarly, removing fragmentation in a heap (a table with no clustered index) is especially useful for nonclustered index scan operations, but has little effect in lookup operations.

Bei sehr niedrigen Fragmentierungsniveaus (unter 5 Prozent) sollten diese Befehle normalerweise nicht eingesetzt werden, da die Vorteile des Entfernens einer so geringen Fragmentierung die Kosten für das Neuorganisieren und Neuerstellen des Indexes nicht aufwiegen.Very low levels of fragmentation (less than 5 percent) should typically not be addressed by either of these commands, because the benefit from removing such a small amount of fragmentation is almost always vastly outweighed by the cost of reorganizing or rebuilding the index. Weitere Informationen zu ALTER INDEX REORGANIZE und ALTER INDEX REBUILD finden Sie unter ALTER INDEX (Transact-SQL).For more information about ALTER INDEX REORGANIZE and ALTER INDEX REBUILD, refer to ALTER INDEX (Transact-SQL).

Hinweis

Durch das erneute Erstellen oder Organisieren kleiner Indizes lässt sich die Fragmentierung häufig nicht verringern.Rebuilding or reorganizing small indexes often does not reduce fragmentation. Die Seiten kleiner Indizes werden manchmal in gemischten Blöcken gespeichert.The pages of small indexes are sometimes stored on mixed extents. Da gemischte Blöcke von bis zu acht Objekten gemeinsam genutzt werden, lässt sich die Fragmentierung in einem kleinen Index durch die erneute Erstellung oder Organisation des Indexes möglicherweise nicht verringern.Mixed extents are shared by up to eight objects, so the fragmentation in a small index might not be reduced after reorganizing or rebuilding it.

Überlegungen zur IndexdefragmentierungIndex defragmentation considerations

Bei Zutreffen bestimmter Bedingungen führt eine Neuerstellung eines gruppierten Indexes dazu, dass alle nicht gruppierten Indizes, in denen auf den Gruppierungsschlüssel verwiesen wird, automatisch neu erstellt werden, wenn die physischen oder logischen IDs geändert werden müssen, die sich in den nicht gruppierten Indexdatensätzen befinden.Under certain conditions, rebuilding a clustered index will automatically rebuild any nonclustered index that reference the clustering key, if the physical or logical identifiers contained in the nonclustered index records needs to change.

In diesen Szenarien wird erzwungen, dass alle nicht gruppierten Indizes automatisch für eine Tabelle neu erstellt werden:Scenarios that force all nonclustered indexes to be automatically rebuilt on a table:

  • Erstellen eines gruppierten Indexes für eine TabelleCreating a clustered index on a table
  • Entfernen eines gruppierten Indexes, was zur Folge hat, dass die Tabelle als Heap gespeichert wirdRemoving a clustered index, causing the table to be stored as a heap
  • Ändern des Gruppierungsschlüssels, um Spalten einzubeziehen oder auszuschließenChanging the clustering key to include or exclude columns

In diesen Szenarien ist es nicht erforderlich, dass alle nicht gruppierten Indizes automatisch für eine Tabelle neu erstellt werden:Scenarios that do not require all nonclustered indexes to be automatically rebuilt on a table:

  • Neuerstellen eines eindeutigen gruppierten IndexesRebuilding a unique clustered index
  • Neuerstellen eines nicht eindeutigen gruppierten IndexesRebuilding a non-unique clustered index
  • Ändern des Indexschemas, beispielsweise Anwenden eines Partitionierungsschemas auf einen gruppierten Index oder Verschieben des gruppierten Indexes in eine andere DateigruppeChanging the index schema, such as applying a partitioning scheme to a clustered index or moving the clustered index to a different filegroup

EinschränkungenLimitations and Restrictions

Indizes mit mehr als 128 Blöcken werden in zwei getrennten Phasen neu erstellt: der logischen und der physischen Phase.Indexes with more than 128 extents are rebuilt in two separate phases: logical and physical. In der logischen Phase werden die vorhandenen Zuordnungseinheiten, die vom Index verwendet werden, für die Aufhebung der Zuordnung markiert, die Datenzeilen werden kopiert und sortiert und dann in neue Zuordnungseinheiten verschoben, die erstellt werden, um den neu erstellten Index zu speichern.In the logical phase, the existing allocation units used by the index are marked for deallocation, the data rows are copied and sorted, then moved to new allocation units created to store the rebuilt index. In der physischen Phase werden die zuvor für die Aufhebung der Zuordnung markierten Zuordnungseinheiten in kurzen Transaktionen physisch gelöscht, die im Hintergrund ausgeführt werden und nicht viele Sperren benötigen.In the physical phase, the allocation units previously marked for deallocation are physically dropped in short transactions that happen in the background, and do not require many locks. Weitere Informationen zu Blöcken finden Sie im Handbuch zur Architektur von Seiten und Blöcken.For more information about extents, refer to the Pages and Extents Architecture Guide.

Die ALTER INDEX REORGANIZE -Anweisung erfordert, dass die Datendatei mit dem Index über Platz verfügt, da der Vorgang temporäre Arbeitsseiten nur in der gleichen Datei zuordnen kann, nicht in einer anderen Datei der Dateigruppe.The ALTER INDEX REORGANIZE statement requires the data file containing the index to have space available, because the operation can only allocate temporary work pages on the same file, not another file within the filegroup. Selbst wenn in einer Dateigruppe leere Seiten verfügbar sind, kann für den Benutzer daher trotzdem Fehler 1105 auftreten: Could not allocate space for object '###' in database '###' because the '###' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.So although the filegroup might have free pages available, the user can still encounter error 1105: Could not allocate space for object '###' in database '###' because the '###' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

Das Erstellen bzw. Neuerstellen von nicht ausgerichteten Indizes für eine Tabelle mit mehr als 1.000 Partitionen ist möglich, wird aber nicht empfohlen.Creating and rebuilding non-aligned indexes on a table with more than 1,000 partitions is possible, but is not recommended. Dies hätte Leistungseinbußen oder eine zu hohe Speicherauslastung während der Vorgänge zur Folge.Doing so may cause degraded performance or excessive memory consumption during these operations.

Ein Index kann nicht neu organisiert oder neu erstellt werden, wenn die Dateigruppe, in der er enthalten ist, eine Offline- oder schreibgeschützte Dateigruppe ist.An index cannot be reorganized or rebuilt if the filegroup in which it is located is offline or set to read-only. Wenn das Schlüsselwort ALL angegeben ist und mindestens ein Index in einer Offline- oder schreibgeschützten Dateigruppe enthalten ist, erzeugt die Anweisung einen Fehler.When the keyword ALL is specified and one or more indexes are in an offline or read-only filegroup, the statement fails.

Wichtig

Wenn ein Index in SQL ServerSQL Server erstellt oder neu erstellt wird, werden Statistiken erstellt oder aktualisiert, indem alle Zeilen in der Tabelle gescannt werden.When an index is created or rebuilt in SQL ServerSQL Server, statistics are created or updated by scanning all the rows in the table.

Ab SQL Server 2012 (11.x)SQL Server 2012 (11.x) werden Statistiken aber mehr nicht durch das Scannen aller Zeilen in der Tabelle erstellt oder aktualisiert, wenn ein partitionierter Index erstellt oder neu erstellt wird.However, starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), statistics are not created or updated by scanning all the rows in the table when a partitioned index is created or rebuilt. Stattdessen verwendet der Abfrageoptimierer den Standardalgorithmus zur Stichprobenentnahme, um diese Statistiken zu generieren.Instead, the query optimizer uses the default sampling algorithm to generate these statistics. Um Statistiken zu partitionierten Indizes durch das Scannen aller Zeilen in der Tabelle abzurufen, verwenden Sie CREATE STATISTICS oder UPDATE STATISTICS mit der FULLSCAN-Klausel.To obtain statistics on partitioned indexes by scanning all the rows in the table, use CREATE STATISTICS or UPDATE STATISTICS with the FULLSCAN clause.

SicherheitSecurity

BerechtigungenPermissions

Erfordert die ALTER-Berechtigung für die Tabelle oder Sicht.Requires ALTER permission on the table or view. Der Benutzer muss ein Mitglied mindestens einer der folgenden Rollen sein:User must be a member of at least one of the following roles:

  • Datenbankrolle db_ddladmin 1db_ddladmin database role 1
  • Datenbankrolle db_ownerdb_owner database role
  • Serverrolle sysadminsysadmin server role

1Die Datenbankrolle db_ddladmin hat die niedrigsten Berechtigungen.1db_ddladmin database role is the least privileged.

Überprüfen der Indexfragmentierung mithilfe von SQL Server Management StudioSQL Server Management StudioCheck index fragmentation using SQL Server Management StudioSQL Server Management Studio

So überprüfen Sie die Fragmentierung eines IndexesTo check the fragmentation of an index

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, in der Sie die Fragmentierung eines Indexes überprüfen möchten.In Object Explorer, Expand the database that contains the table on which you want to check an index's fragmentation.

  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.

  3. Erweitern Sie die Tabelle, in der Sie die Fragmentierung eines Indexes überprüfen möchten.Expand the table on which you want to check an index's fragmentation.

  4. Erweitern Sie den Ordner Indizes .Expand the Indexes folder.

  5. Klicken Sie mit der rechten Maustaste auf den Index, für den Sie die Fragmentierung überprüfen möchten, und wählen Sie Eigenschaftenaus.Right-click the index of which you want to check the fragmentation and select Properties.

  6. Wählen Sie unter Seite auswählendie Option Fragmentierungaus.Under Select a page, select Fragmentation.

    Die folgenden Informationen sind auf der Seite Fragmentierung verfügbar:The following information is available on the Fragmentation page:

    Seitenfüllgrad: Gibt den durchschnittlichen Füllgrad der Indexseiten als Prozentwert an.Page fullness Indicates average fullness of the index pages, as a percentage. 100 % bedeutet, dass die Indexseiten vollständig gefüllt sind.100% means the index pages are completely full. 50 % heißt, dass jede Indexseite im Durchschnitt zur Hälfte gefüllt ist.50% means that, on average, each index page is half full.

    Fragmentierung gesamt: Prozentwert der logischen Fragmentierung.Total fragmentation The logical fragmentation percentage. Dieser Wert gibt die Anzahl der Seiten in einem Index an, die nicht in Reihenfolge gespeichert sind.This indicates the number of pages in an index that are not stored in order.

    Durchschnittliche Zeilengröße: Durchschnittliche Größe einer Zeile auf Blattebene.Average row size The average size of a leaf level row.

    Tiefe: Anzahl der Ebenen im Index, einschließlich der Blattebene.Depth The number of levels in the index, including the leaf level.

    Weitergeleitete Datensätze: Anzahl der Datensätze in einem Heap, die Weiterleitungszeiger auf einen anderen Datenspeicherort besitzen.Forwarded records The number of records in a heap that have forward pointers to another data location. (Dieser Status tritt während eines Updates auf, wenn nicht genügend Speicherplatz vorhanden ist, um die neue Zeile am ursprünglichen Speicherort zu speichern.)(This state occurs during an update, when there is not enough room to store the new row in the original location.)

    Inaktive Zeilen: Anzahl der Zeilen, die als gelöscht markiert sind, aber noch nicht entfernt wurden.Ghost rows The number of rows that are marked as deleted but not yet removed. Diese Zeilen werden von einem Bereinigungsthread entfernt, wenn der Server nicht ausgelastet ist.These rows will be removed by a clean-up thread, when the server is not busy. Dieser Wert schließt keine Zeilen ein, die aufgrund einer ausstehenden Momentaufnahme-Isolationstransaktion beibehalten werden.This value does not include rows that are being retained due to an outstanding snapshot isolation transaction.

    Indextyp: Der Indextyp.Index type The type of index. Mögliche Werte sind Gruppierter Index, Nicht gruppierter Indexund Primär-XML.Possible values are Clustered index, Nonclustered index, and Primary XML. Tabellen können auch als Heap gespeichert werden (ohne Indizes). Dann kann aber diese Seite Indexeigenschaften nicht geöffnet werden.Tables can also be stored as a heap (without indexes), but then this Index Properties page cannot be opened.

    Zeilen auf Blattebene: Anzahl der Zeilen auf Blattebene.Leaf-level rows The number of leaf level rows.

    Maximale Zeilengröße: Maximale Größe von Zeilen auf Blattebene.Maximum row size The maximum leaf-level row size.

    Minimale Zeilengröße: Minimale Größe von Zeilen auf Blattebene.Minimum row size The minimum leaf-level row size.

    Seiten: Gesamtanzahl der Datenseiten.Pages The total number of data pages.

    Partitions-ID: Partitions-ID der B-Struktur, die den Index enthält.Partition ID The partition ID of the b-tree containing the index.

    Inaktive Zeilen (Version) : Die Anzahl inaktiver Datensätze, die aufgrund einer ausstehenden Momentaufnahme-Isolationstransaktion beibehalten werden.Version ghost rows The number of ghost records that are being retained due to an outstanding snapshot isolation transaction.

Überprüfen der Indexfragmentierung mithilfe von Transact-SQLTransact-SQLCheck index fragmentation using Transact-SQLTransact-SQL

So überprüfen Sie die Fragmentierung eines IndexesTo check the fragmentation of an index

Das folgende Beispiel ermittelt den durchschnittlichen Prozentsatz der Fragmentierung aller Indizes in der Tabelle „HumanResources.Employee“ in der AdventureWorks-Datenbank.The following example Find the average fragmentation percentage of all indexes in the HumanResources.Employee table in the AdventureWorks database.

SELECT a.index_id, name, avg_fragmentation_in_percent
   FROM sys.dm_db_index_physical_stats
      (DB_ID
         (N'AdventureWorks2012')
         , OBJECT_ID(N'HumanResources.Employee')
         , NULL
         , NULL
         , NULL) AS a
   JOIN sys.indexes AS b
      ON a.object_id = b.object_id
      AND a.index_id = b.index_id;

Das von der vorherigen Anweisung zurückgegebene Resultset kann in etwa wie folgt aussehen.The previous statement returns a result set similar to the following.

index_id    name                                                  avg_fragmentation_in_percent
----------- ----------------------------------------------------- ----------------------------
1           PK_Employee_BusinessEntityID                          0
2           IX_Employee_OrganizationalNode                        0
3           IX_Employee_OrganizationalLevel_OrganizationalNode    0
5           AK_Employee_LoginID                                   66.6666666666667
6           AK_Employee_NationalIDNumber                          50
7           AK_Employee_rowguid                                   0

(6 row(s) affected)

Weitere Informationen finden Sie unter sys.dm_db_index_physical_stats.For more information, see sys.dm_db_index_physical_stats.

Entfernen der Indexfragmentierung mithilfe von SQL Server Management StudioSQL Server Management StudioRemove fragmentation using SQL Server Management StudioSQL Server Management Studio

So organisieren oder erstellen Sie einen Index neuTo reorganize or rebuild an index

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, in der Sie einen Index neu organisieren möchten.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.
  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.
  3. Erweitern Sie die Tabelle, in der Sie einen Index neu organisieren möchten.Expand the table on which you want to reorganize an index.
  4. Erweitern Sie den Ordner Indizes .Expand the Indexes folder.
  5. Klicken Sie mit der rechten Maustaste auf den Index, den Sie neu organisieren möchten, und wählen Sie Neu organisierenaus.Right-click the index you want to reorganize and select Reorganize.
  6. Vergewissern Sie sich im Dialogfeld Indizes neu organisieren , dass der richtige Index im Raster Neu zu organisierende Indizes ausgewählt ist, und klicken Sie auf OK.In the Reorganize Indexes dialog box, verify that the correct index is in the Indexes to be reorganized grid and click OK.
  7. Aktivieren Sie das Kontrollkästchen Spaltendaten großer Objekte komprimieren , um anzugeben, dass alle Seiten mit umfangreichen Objektdaten (Large Object, LOB) komprimiert werden sollen.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  8. Klicken Sie auf OK.Click OK.

So organisieren Sie alle Indizes in einer Tabelle neuTo reorganize all indexes in a table

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, in der Sie die Indizes neu organisieren möchten.In Object Explorer, Expand the database that contains the table on which you want to reorganize the indexes.
  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.
  3. Erweitern Sie die Tabelle, in der Sie die Indizes neu organisieren möchten.Expand the table on which you want to reorganize the indexes.
  4. Klicken Sie mit der rechten Maustaste auf den Ordner Indizes , und wählen Sie Alle neu organisierenaus.Right-click the Indexes folder and select Reorganize All.
  5. Vergewissern Sie sich im Dialogfeld Index neu organisieren , dass die richtigen Indizes im Raster Neu zu organisierende Indizesausgewählt sind.In the Reorganize Indexes dialog box, verify that the correct indexes are in the Indexes to be reorganized. Um einen Index aus dem Raster Neu zu organisierende Indizes zu entfernen, wählen Sie den Index aus, und drücken Sie die ENTF-Taste.To remove an index from the Indexes to be reorganized grid, select the index and then press the Delete key.
  6. Aktivieren Sie das Kontrollkästchen Spaltendaten großer Objekte komprimieren , um anzugeben, dass alle Seiten mit umfangreichen Objektdaten (Large Object, LOB) komprimiert werden sollen.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  7. Klicken Sie auf OK.Click OK.

So erstellen Sie einen Index neuTo rebuild an index

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, in der Sie einen Index neu organisieren möchten.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.
  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.
  3. Erweitern Sie die Tabelle, in der Sie einen Index neu organisieren möchten.Expand the table on which you want to reorganize an index.
  4. Erweitern Sie den Ordner Indizes .Expand the Indexes folder.
  5. Klicken Sie mit der rechten Maustaste auf den Index, den Sie neu organisieren möchten, und wählen Sie Neu erstellen aus.Right-click the index you want to reorganize and select Rebuild.
  6. Vergewissern Sie sich im Dialogfeld Indizes neu erstellen , dass der richtige Index im Raster Erneut zu erstellende Indizes ausgewählt ist, und klicken Sie auf OK.In the Rebuild Indexes dialog box, verify that the correct index is in the Indexes to be rebuilt grid and click OK.
  7. Aktivieren Sie das Kontrollkästchen Spaltendaten großer Objekte komprimieren , um anzugeben, dass alle Seiten mit umfangreichen Objektdaten (Large Object, LOB) komprimiert werden sollen.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  8. Klicken Sie auf OK.Click OK.

Entfernen der Indexfragmentierung mithilfe von Transact-SQLTransact-SQLRemove fragmentation using Transact-SQLTransact-SQL

So organisieren Sie einen fragmentierten Index neuTo reorganize a fragmented index

Im folgenden Beispiel wird der IX_Employee_OrganizationalLevel_OrganizationalNode-Index für die HumanResources.Employee-Tabelle in der AdventureWorks-Datenbank neu organisiert.The following example reorganizes the IX_Employee_OrganizationalLevel_OrganizationalNode index on the HumanResources.Employee table in the AdventureWorks database.

ALTER INDEX IX_Employee_OrganizationalLevel_OrganizationalNode
   ON HumanResources.Employee
   REORGANIZE
;

So organisieren Sie alle Indizes in einer Tabelle neuTo reorganize all indexes in a table

Im folgenden Beispiel werden alle Indizes für die Tabelle „HumanResources.Employee“ in der AdventureWorks-Datenbank neu organisiert.The following example Reorganize all indexes on the HumanResources.Employee table in the AdventureWorks database.

ALTER INDEX ALL ON HumanResources.Employee
   REORGANIZE
;

So erstellen Sie einen fragmentierten Index neuTo rebuild a fragmented index

Im folgenden Beispiel wird ein einzelner Index für die Tabelle Employee in der AdventureWorks-Datenbank erneut erstellt.The following example rebuilds a single index on the Employee table in the AdventureWorks database.

ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
REBUILD
;

So erstellen Sie alle Indizes in einer Tabelle neuTo rebuild all indexes in a table

Im folgende Beispiel werden alle Indizes für die Tabelle in der AdventureWorks-Datenbank mithilfe des Schlüsselworts ALL erneut erstellt.The following example rebuilds all indexes associated with the table in the AdventureWorks database using the ALL keyword. Es werden drei Optionen angegeben.Three options are specified.

ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON)
;

Weitere Informationen finden Sie unter ALTER INDEX.For more information, see ALTER INDEX.

Automatische Verwaltung von Index und StatistikenAutomatic index and statistics management

Nutzen Sie Lösungen wie Adaptive Index Defrag, um die Indexdefragmentierung und das Aktualisieren der Statistiken für eine oder mehrere Datenbanken automatisch zu verwalten.Leverage solutions such as Adaptive Index Defrag to automatically manage index defragmentation and statistics updates for one or more databases. Dieser Vorgang entscheidet unter anderem anhand des Fragmentierungsgrads automatisch, ob ein Index neu organisiert oder neu erstellt wird und aktualisiert Statistiken mit einem linearen Schwellenwert.This procedure automatically chooses whether to rebuild or reorganize an index according to its fragmentation level, amongst other parameters, and update statistics with a linear threshold.

Weitere InformationenSee Also