Neuorganisieren und Neuerstellen von IndizesReorganize and Rebuild Indexes

DIESES THEMA GILT FÜR: jaSQL Server (ab 2008)jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Weitere Informationen, die sich auf vorherige Versionen von SQL Server beziehen, finden Sie unter Neuorganisieren und Neuerstellen von Indizes.For content related to previous versions of SQL Server, see Reorganize and Rebuild Indexes.

In diesem Thema wird beschrieben, wie Sie einen fragmentierten Index in SQL Server 2016SQL Server 2016 mithilfe SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLneu organisieren oder neu erstellen.This topic describes how to reorganize or rebuild a fragmented index in SQL Server 2016SQL Server 2016 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. SQL Server-DatenbankmodulSQL Server Database Engine verwaltet Indizes automatisch, wenn Einfüge-, Update- oder Löschvorgänge an den zugrunde liegenden Daten vorgenommen werden.The SQL Server-DatenbankmodulSQL Server Database Engine automatically maintains 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.

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.

Vorbereitungen Before You Begin

Erkennen der Fragmentierung Detecting 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.

ColumnColumn 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)ALTER INDEX REBUILD WITH (ONLINE = ON)

* Das Neuerstellen eines Indexes kann online oder offline erfolgen.* 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.

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. Bei sehr niedrigen Fragmentierungsniveaus (unter 5 Prozent) sollten diese Befehle 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 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.

Hinweis

Im Allgemeinen ist die Fragmentierung bei kleinen Indizes oft nicht steuerbar.In general, fragmentation on small indexes is often not controllable. Die Seiten kleiner Indizes werden manchmal in gemischten Blöcken gespeichert.The pages of small indexes are sometimes stored on mixed extents. Gemischte Blöcke sind für bis zu acht Objekte freigegeben, sodass die Fragmentierung in einem kleinen Index durch die Reorganisation oder das erneute Erstellen des Indexes möglicherweise nicht verringert wird.Mixed extents are shared by up to eight objects, so the fragmentation in a small index might not be reduced after reorganizing or rebuilding the index.

Einschränkungen Limitations 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.

  • Indexoptionen können beim Neuorganisieren eines Indexes nicht angegeben werden.Index options cannot be specified when reorganizing an index.

  • 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. Obwohl also in der Dateigruppe möglicherweise noch freie Seiten vorhanden sind, kann dem Benutzer trotzdem Fehler 1105 angezeigt werden: „Speicherplatz für das <Indexname>.<Tabellenname>-Objekt in der <Datenbankname>-Datenbank konnte nicht zugeordnet werden, da die Dateigruppe „PRIMARY“ voll ist.“So although the filegroup might have free pages available, the user can still encounter error 1105 "Could not allocate space for object <index name>.<table name> in database <database name> because the 'PRIMARY' filegroup is full."

  • Das Erstellen bzw. Neuerstellen von nicht ausgerichteten Indizes für eine Tabelle mit mehr als 1.000 Partitionen ist möglich, wird aber nicht unterstützt.Creating and rebuilding nonaligned indexes on a table with more than 1,000 partitions is possible, but is not supported. 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.

Hinweis

Ab SQL Server 2012SQL Server 2012werden Statistiken nicht durch das Scannen aller Zeilen in der Tabelle erstellt, wenn ein partitionierter Index erstellt oder neu erstellt wird.Starting with SQL Server 2012SQL Server 2012, statistics are not created by scanning all the rows in the table when a partitioned index is created or rebuilt. Der Abfrageoptimierer generiert stattdessen Statistiken mithilfe des Standardalgorithmus zur Stichprobenentnahme.Instead, the query optimizer uses the default sampling algorithm to generate 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.

Sicherheit Security

Berechtigungen Permissions

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht.Requires ALTER permission on the table or view. Der Benutzer muss ein Mitglied der festen Serverrolle sysadmin bzw. der festen Datenbankrollen db_ddladmin und db_owner sein.User must be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

Verwendung von SQL Server Management Studio Using SQL 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üllgradPage fullness
    Gibt den durchschnittlichen Füllgrad der Indexseiten als Prozentwert an.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 gesamtTotal fragmentation
    Prozentwert der logischen Fragmentierung.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ößeAverage row size
    Durchschnittliche Größe einer Zeile auf Blattebene.The average size of a leaf level row.

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

    Weitergeleitete DatensätzeForwarded records
    Anzahl der Datensätze in einem Heap, die Weiterleitungszeiger auf einen anderen Datenspeicherort besitzen.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 ZeilenGhost rows
    Anzahl der Zeilen, die als gelöscht markiert sind, aber noch nicht entfernt wurden.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.

    IndextypIndex type
    Der Indextyp.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 BlattebeneLeaf-level rows
    Anzahl der Zeilen auf Blattebene.The number of leaf level rows.

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

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

    SeitenPages
    Gesamtanzahl der Datenseiten.The total number of data pages.

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

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

Verwenden von Transact-SQL Using Transact-SQL

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

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    GO  
    -- Find the average fragmentation percentage of all indexes  
    -- in the HumanResources.Employee table.   
    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;   
    GO  
    

    Das von der obigen Anweisung zurückgegebene Resultset kann in etwa wie folgt aussehen.The statement above might return 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 (Transact-SQL).For more information, see sys.dm_db_index_physical_stats (Transact-SQL).

Verwendung von SQL Server Management Studio Using SQL 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.

Verwenden von Transact-SQL Using Transact-SQL

So organisieren Sie einen defragmentierten Index neuTo reorganize a defragmented index

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    -- Reorganize the IX_Employee_OrganizationalLevel_OrganizationalNode 
    -- index on the HumanResources.Employee table.   
    
    ALTER INDEX IX_Employee_OrganizationalLevel_OrganizationalNode 
      ON HumanResources.Employee  
    REORGANIZE ;   
    GO  
    

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

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    -- Reorganize all indexes on the HumanResources.Employee table.  
    ALTER INDEX ALL ON HumanResources.Employee  
    REORGANIZE ;   
    GO  
    

So erstellen Sie einen defragmentierten Index neuTo rebuild a defragmented index

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute. Im folgenden Beispiel wird ein einzelner Index in der Employee -Tabelle neu erstellt.The example rebuilds a single index on the Employee table.

    USE AdventureWorks2012;
    GO
    ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
    REBUILD;
    GO
    

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

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster. In diesem Beispiel wird das ALL-Schlüsselwort verwendet.Copy and paste the following example into the query The example specifies the keyword ALL. Hier werden alle der Tabelle zugeordneten Indizes neu erstellt.This rebuilds all indexes associated with the table. Es werden drei Optionen angegeben.Three options are specified.

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

    Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL).For more information, see ALTER INDEX (Transact-SQL).

Siehe auchSee Also

Handbuch zum SQL Server IndexentwurfSQL Server Index Design Guide