Réorganiser et reconstruire des indexReorganize and Rebuild Indexes

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database ouiAzure SQL Data Warehouse ouiParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Cet article explique comment réorganiser ou reconstruire un index fragmenté dans SQL ServerSQL Server à l'aide de SQL Server Management StudioSQL Server Management Studio ou de Transact-SQLTransact-SQL.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. Le Moteur de base de données SQL ServerSQL Server Database Engine modifie automatiquement des index quand des opérations d’insertion, de mise à jour ou de suppression sont effectuées sur les données sous-jacentes.The Moteur de base de données SQL ServerSQL Server Database Engine automatically modifies indexes whenever insert, update, or delete operations are made to the underlying data. Au fil des modifications, les informations figurant dans l'index sont éparpillées dans la base de données (fragmentée).Over time these modifications can cause the information in the index to become scattered in the database (fragmented). La fragmentation intervient lorsque des index possèdent des pages dans lesquelles l'organisation logique (reposant sur la valeur de la clé) ne correspond pas à l'organisation physique dans le fichier de données.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. Une fragmentation importante des index peut diminuer les performances des requêtes et ralentir la vitesse de réponse de votre application, en particulier les opérations d’analyse.Heavily fragmented indexes can degrade query performance and cause your application to respond slowly, especially scan operations.

Vous pouvez remédier à la fragmentation des index en réorganisant un index ou en reconstruisant un index.You can remedy index fragmentation by reorganizing or rebuilding an index. Dans le cas d'index partitionnés reposant sur un schéma de partition, vous pouvez utiliser les méthodes suivantes sur la totalité ou sur une partition unique d'un index.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. La reconstruction d'un index entraîne sa suppression puis sa recréation.Rebuilding an index drops and re-creates the index. Ceci permet d'éviter toute fragmentation, de libérer de l'espace disque en compactant les pages d'après le paramètre du facteur de remplissage spécifié ou déjà existant et en retriant les lignes de l'index en pages contiguës.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. Si ALL est précisé, tous les index sur la table sont supprimés puis reconstruits en une seule transaction.When ALL is specified, all indexes on the table are dropped and rebuilt in a single transaction. La réorganisation d'un index utilise des ressources système minimes.Reorganizing an index uses minimal system resources. En effet, elle défragmente le niveau feuille des index cluster et non cluster sur les tables et les vues en retriant les pages de niveau feuille de façon physique afin de resuivre l'ordre logique, c'est-à-dire de gauche à droite, des nœuds.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. Cette opération compacte également les pages d'index.Reorganizing also compacts the index pages. Le compactage s'appuie sur la valeur du facteur de remplissage existante.Compaction is based on the existing fill factor value.

Avant de commencerBefore You Begin

Détection de la fragmentationDetecting Fragmentation

Lorsque vous déterminez la méthode de défragmentation à adopter, la première étape consiste à analyser l'index pour évaluer son degré de fragmentation.The first step in deciding which defragmentation method to use is to analyze the index to determine the degree of fragmentation. La fonction système sys.dm_db_index_physical_statsvous permet de détecter la fragmentation dans un index spécifique, dans tous les index d’une table ou d’une vue indexée, dans tous les index d’une base de données ou dans tous les index de l’ensemble des bases de données.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. Pour les index partitionnés, sys.dm_db_index_physical_stats procure aussi des informations de fragmentation pour chaque partition.For partitioned indexes, sys.dm_db_index_physical_stats also provides fragmentation information for each partition.

Le jeu de résultats retourné par la fonction sys.dm_db_index_physical_stats inclut les colonnes suivantes.The result set returned by the sys.dm_db_index_physical_stats function includes the following columns.

colonneColumn DescriptionDescription
avg_fragmentation_in_percentavg_fragmentation_in_percent Pourcentage de fragmentation logique (pages non ordonnées dans un index).The percent of logical fragmentation (out-of-order pages in the index).
fragment_countfragment_count Nombre de fragments (pages de feuille consécutives physiquement) dans l'index.The number of fragments (physically consecutive leaf pages) in the index.
avg_fragment_size_in_pagesavg_fragment_size_in_pages Nombre moyen de pages dans un fragment d'un index.Average number of pages in one fragment in an index.

Une fois le degré de fragmentation connu, utilisez le tableau suivant pour déterminer la méthode la mieux adaptée pour corriger la fragmentation.After the degree of fragmentation is known, use the following table to determine the best method to correct the fragmentation.

Valeuravg_fragmentation_in_percentavg_fragmentation_in_percent value Instruction correctiveCorrective statement
> 5 % et < = 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 La reconstruction d’un index peut être exécutée en ligne ou hors connexion.1 Rebuilding an index can be executed online or offline. La réorganisation d'un index s'effectue toujours en ligne.Reorganizing an index is always executed online. Pour obtenir le même niveau de disponibilité qu'avec l'option de réorganisation, vous devez reconstruire les index en ligne.To achieve availability similar to the reorganize option, you should rebuild indexes online.

Conseil

Ces valeurs fournissent des directives approximatives pour déterminer le point auquel vous devez basculer entre ALTER INDEX REORGANIZE et ALTER INDEX REBUILD.These values provide a rough guideline for determining the point at which you should switch between ALTER INDEX REORGANIZE and ALTER INDEX REBUILD. Toutefois, les valeurs réelles peuvent varier d'un cas à l'autre.However, the actual values may vary from case to case. Il est important que vous fassiez des essais pour déterminer le meilleur seuil pour votre environnement.It is important that you experiment to determine the best threshold for your environment. Par exemple, si un index donné est principalement utilisé pour les opérations d’analyse, la suppression de la fragmentation peut améliorer les performances de ces opérations.For example, if a given index is used mainly for scan operations, removing fragmentation can improve performance of these operations. L’avantage en matière de performances est moins perceptible pour les index utilisés principalement pour les opérations de recherche.The performance benefit is less noticeable for indexes that are used primarily for seek operations. De même, la suppression de la fragmentation dans un segment de mémoire (une table sans index cluster) est particulièrement utile pour les opérations d’analyse d’index non-cluster, mais n’a que peu d’effet dans les opérations de recherche.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.

Des niveaux très bas de fragmentation (inférieurs à 5 %) ne doivent pas être pris en compte par ces commandes, car l’avantage de la suppression d’un volume de fragmentation aussi réduit est quasiment toujours largement contrebalancé par le coût de la réorganisation ou de la reconstruction de l’index.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. Pour plus d’informations sur ALTER INDEX REORGANIZE et ALTER INDEX REBUILD, consultez ALTER INDEX (Transact-SQL).For more information about ALTER INDEX REORGANIZE and ALTER INDEX REBUILD, refer to ALTER INDEX (Transact-SQL).

Notes

Bien souvent, la reconstruction ou la réorganisation de petits index ne réduit pas la fragmentation.Rebuilding or reorganizing small indexes often does not reduce fragmentation. Les pages de petits index sont parfois stockées sur des extensions mixtes.The pages of small indexes are sometimes stored on mixed extents. Les extensions mixtes sont partagées par huit objets maximum ; par conséquent, la fragmentation dans un petit index peut ne pas être réduite après sa réorganisation ou sa reconstruction.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.

Considérations sur la défragmentation d’indexIndex defragmentation considerations

Dans certaines conditions, la recréation d’un index cluster recrée automatiquement tout index non-cluster qui référence la clé de clustering, si les identificateurs physiques ou logiques contenus dans les enregistrements d’index non-cluster doivent être modifiés.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.

Scénarios qui forcent la recréation automatique de tous les index non-cluster sur une table :Scenarios that force all nonclustered indexes to be automatically rebuilt on a table:

  • Création d’un index cluster sur une tableCreating a clustered index on a table
  • Suppression d’un index cluster, provoquant le stockage de la table en tant que segment de mémoireRemoving a clustered index, causing the table to be stored as a heap
  • Modification de la clé de clustering pour inclure ou exclure des colonnesChanging the clustering key to include or exclude columns

Scénarios qui ne nécessitent pas la recréation automatique de tous les index non-cluster sur une table :Scenarios that do not require all nonclustered indexes to be automatically rebuilt on a table:

  • Recréation d’un index cluster uniqueRebuilding a unique clustered index
  • Recréation d’un index cluster non uniqueRebuilding a non-unique clustered index
  • Modification du schéma d’index, telle que l’application d’un schéma de partitionnement à un index cluster ou le déplacement de l’index cluster vers un autre groupe de fichiersChanging the index schema, such as applying a partitioning scheme to a clustered index or moving the clustered index to a different filegroup

Limitations et restrictionsLimitations and Restrictions

Les index possédant plus de 128 extensions sont reconstruits en deux phases distinctes : une phase logique et une phase physique.Indexes with more than 128 extents are rebuilt in two separate phases: logical and physical. Dans la phase logique, les unités d'allocation utilisées par l'index sont signalées comme devant être désallouées, les lignes de données sont copiées et triées, puis elles sont déplacées vers les nouvelles unités d'allocation ayant été créées pour stocker l'index reconstruit.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. Dans la phase physique, les unités d'allocation préalablement signalées pour être désallouées sont supprimées physiquement dans des transactions courtes qui interviennent en arrière-plan et nécessitent peu de verrous.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. Pour plus d’informations sur les étendues, consultez Guide d’architecture des pages et des étendues.For more information about extents, refer to the Pages and Extents Architecture Guide.

L’instruction ALTER INDEX REORGANIZE a besoin du fichier de données contenant l’index pour disposer d’espace, car l’opération peut uniquement allouer des pages de travail temporaires à un même fichier, mais pas à un autre fichier du groupe de fichiers.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. De ce fait, même si le groupe de fichiers a des pages libres, l’utilisateur peut toujours rencontrer l’erreur 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.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.

Il est possible de créer et de reconstruire des index non alignés sur une table constituée de plus de 1 000 partitions, mais cela n’est pas recommandé.Creating and rebuilding non-aligned indexes on a table with more than 1,000 partitions is possible, but is not recommended. Ces opérations peuvent entraîner une dégradation des performances ou une consommation de mémoire excessive.Doing so may cause degraded performance or excessive memory consumption during these operations.

Un index ne peut pas être réorganisé ou reconstruit si le groupe de fichiers dans lequel il se trouve est hors connexion ou en lecture seule.An index cannot be reorganized or rebuilt if the filegroup in which it is located is offline or set to read-only. Si le mot clé ALL est spécifié et qu’un ou plusieurs index se trouvent dans un groupe de fichiers hors connexion ou en lecture seule, l’instruction échoue.When the keyword ALL is specified and one or more indexes are in an offline or read-only filegroup, the statement fails.

Important

Quand un index est créé ou reconstruit dans SQL ServerSQL Server, les statistiques sont créées ou mises à jour par l’analyse de toutes les lignes de la table.When an index is created or rebuilt in SQL ServerSQL Server, statistics are created or updated by scanning all the rows in the table.

En revanche, à partir de SQL Server 2012 (11.x)SQL Server 2012 (11.x), les statistiques ne sont pas créées ou mises à jour par l’analyse de toutes les lignes de la table au moment où un index partitionné est créé ou reconstruit.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. Au lieu de cela, l’optimiseur de requête se sert de l’algorithme d’échantillonnage par défaut pour générer ces statistiques.Instead, the query optimizer uses the default sampling algorithm to generate these statistics. Pour obtenir des statistiques sur les index partitionnés en analysant toutes les lignes de la table, utilisez CREATE STATISTICS ou UPDATE STATISTICS avec la clause FULLSCAN.To obtain statistics on partitioned indexes by scanning all the rows in the table, use CREATE STATISTICS or UPDATE STATISTICS with the FULLSCAN clause.

SécuritéSecurity

AutorisationsPermissions

Nécessite l’autorisation ALTER sur la table ou la vue.Requires ALTER permission on the table or view. L’utilisateur doit être membre d’au moins l’un des rôles suivants :User must be a member of at least one of the following roles:

  • Rôle de base de données db_ddladmin 1db_ddladmin database role 1
  • Rôle de base de données db_ownerdb_owner database role
  • Rôle serveur sysadminsysadmin server role

1 Le rôle de base de données db_ddladmin est le moins privilégié.1db_ddladmin database role is the least privileged.

Vérifier la fragmentation d’un index à l’aide de SQL Server Management StudioSQL Server Management StudioCheck index fragmentation using SQL Server Management StudioSQL Server Management Studio

Pour vérifier la fragmentation d'un indexTo check the fragmentation of an index

  1. Dans l’Explorateur d’objets, développez la base de données qui contient la table sur laquelle vous souhaitez vérifier une fragmentation d’index.In Object Explorer, Expand the database that contains the table on which you want to check an index's fragmentation.

  2. Développez le dossier Tables .Expand the Tables folder.

  3. Développez la table sur laquelle vous souhaitez vérifier une fragmentation d’index.Expand the table on which you want to check an index's fragmentation.

  4. Développez le dossier Index .Expand the Indexes folder.

  5. Cliquez avec le bouton droit sur l’index dont vous voulez vérifier la fragmentation, puis sélectionnez Propriétés.Right-click the index of which you want to check the fragmentation and select Properties.

  6. Sous Sélectionner une page, sélectionnez Fragmentation.Under Select a page, select Fragmentation.

    Les informations suivantes sont disponibles dans la page Fragmentation :The following information is available on the Fragmentation page:

    Remplissage de la page Indique le remplissage moyen des pages d'index, sous forme de pourcentage.Page fullness Indicates average fullness of the index pages, as a percentage. 100% signifie que les pages d'index sont totalement remplies.100% means the index pages are completely full. 50% signifie qu'en moyenne, chaque page d'index est remplie à moitié.50% means that, on average, each index page is half full.

    Fragmentation totale Pourcentage de fragmentation logique.Total fragmentation The logical fragmentation percentage. Cette valeur indique le nombre de pages dans un index qui ne sont pas stockées dans l'ordre.This indicates the number of pages in an index that are not stored in order.

    Taille moyenne de ligne Taille moyenne d'une ligne de niveau feuille.Average row size The average size of a leaf level row.

    Profondeur Nombre de niveaux dans l'index, notamment le niveau feuille.Depth The number of levels in the index, including the leaf level.

    Enregistrements transférés Nombre d'enregistrements d'un segment qui contiennent des pointeurs avant vers un autre emplacement de données.Forwarded records The number of records in a heap that have forward pointers to another data location. (Cet état se produit pendant une mise à jour, lorsque l'espace disponible est insuffisant pour stocker la nouvelle ligne à l'emplacement d'origine.)(This state occurs during an update, when there is not enough room to store the new row in the original location.)

    Lignes fantômes Nombre de lignes marquées pour la suppression qui ne sont pas encore supprimées.Ghost rows The number of rows that are marked as deleted but not yet removed. Ces lignes seront supprimées par un thread de nettoyage, lorsque le serveur n'est pas occupé.These rows will be removed by a clean-up thread, when the server is not busy. Cette valeur ne comprend pas les lignes qui sont conservées à cause d'une transaction d'isolement d'instantané en suspens.This value does not include rows that are being retained due to an outstanding snapshot isolation transaction.

    Type d'index Type de l'index.Index type The type of index. Les valeurs possibles sont Index cluster, Index non-clusteret XML primaire.Possible values are Clustered index, Nonclustered index, and Primary XML. Les tables peuvent également être stockées en tant que segment (sans index), mais dans ce cas la page Propriétés de l'index est impossible à ouvrir.Tables can also be stored as a heap (without indexes), but then this Index Properties page cannot be opened.

    Nombre de lignes de niveau feuille Nombre de lignes de niveau feuille.Leaf-level rows The number of leaf level rows.

    Taille maximale de ligne Taille maximale des lignes de niveau feuille.Maximum row size The maximum leaf-level row size.

    Taille minimale de ligne Taille minimale des lignes de niveau feuille.Minimum row size The minimum leaf-level row size.

    Pages Nombre total de pages de données.Pages The total number of data pages.

    ID de partition ID de partition de l'arbre B (B-tree) qui contient l'index.Partition ID The partition ID of the b-tree containing the index.

    Enregistrement de version fantôme Nombre d'enregistrements fantômes étant conservés en raison d'une transaction d'isolement d'instantané en attente.Version ghost rows The number of ghost records that are being retained due to an outstanding snapshot isolation transaction.

Vérifier la fragmentation d’un index à l’aide de Transact-SQLTransact-SQLCheck index fragmentation using Transact-SQLTransact-SQL

Pour vérifier la fragmentation d'un indexTo check the fragmentation of an index

L’exemple suivant recherche le pourcentage de fragmentation moyenne de tous les index dans la table HumanResources.Employee de la base de données AdventureWorks.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;

L'instruction précédente retourne un jeu de résultats similaire au suivant.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)

Pour plus d’informations, consultez sys.dm_db_index_physical_stats.For more information, see sys.dm_db_index_physical_stats.

Supprimer la fragmentation à l’aide de SQL Server Management StudioSQL Server Management StudioRemove fragmentation using SQL Server Management StudioSQL Server Management Studio

Pour réorganiser ou reconstruire un indexTo reorganize or rebuild an index

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table sur laquelle vous souhaitez réorganiser un index.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.
  2. Développez le dossier Tables .Expand the Tables folder.
  3. Développez la table sur laquelle vous souhaitez réorganiser un index.Expand the table on which you want to reorganize an index.
  4. Développez le dossier Index .Expand the Indexes folder.
  5. Cliquez avec le bouton droit sur l’index que vous souhaitez réorganiser et sélectionnez Réorganiser.Right-click the index you want to reorganize and select Reorganize.
  6. Dans la boîte de dialogue Réorganiser les index , vérifiez que l'index correct figure dans la grille Index à réorganiser , puis cliquez sur OK.In the Reorganize Indexes dialog box, verify that the correct index is in the Indexes to be reorganized grid and click OK.
  7. Cochez la case Compacter les données de la colonne d’objets volumineux pour indiquer que toutes les pages qui contiennent des données LOB seront aussi compactées.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  8. Cliquez sur OK.Click OK.

Pour réorganiser tous les index d'une tableTo reorganize all indexes in a table

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table sur laquelle vous souhaitez réorganiser les index.In Object Explorer, Expand the database that contains the table on which you want to reorganize the indexes.
  2. Développez le dossier Tables .Expand the Tables folder.
  3. Développez la table sur laquelle vous souhaitez réorganiser les index.Expand the table on which you want to reorganize the indexes.
  4. Cliquez avec le bouton droit sur le dossier Index , puis sélectionnez Réorganiser tout.Right-click the Indexes folder and select Reorganize All.
  5. Dans la boîte de dialogue Réorganiser les index , vérifiez que les index corrects sont dans Index à réorganiser.In the Reorganize Indexes dialog box, verify that the correct indexes are in the Indexes to be reorganized. Pour supprimer un index de la grille Index à réorganiser , sélectionnez l'index et appuyez sur la touche SUPPR.To remove an index from the Indexes to be reorganized grid, select the index and then press the Delete key.
  6. Cochez la case Compacter les données de la colonne d’objets volumineux pour indiquer que toutes les pages qui contiennent des données LOB seront aussi compactées.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  7. Cliquez sur OK.Click OK.

Pour reconstruire un indexTo rebuild an index

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table sur laquelle vous souhaitez réorganiser un index.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.
  2. Développez le dossier Tables .Expand the Tables folder.
  3. Développez la table sur laquelle vous souhaitez réorganiser un index.Expand the table on which you want to reorganize an index.
  4. Développez le dossier Index .Expand the Indexes folder.
  5. Cliquez avec le bouton droit sur l’index que vous souhaitez réorganiser et sélectionnez Regénérer.Right-click the index you want to reorganize and select Rebuild.
  6. Dans la boîte de dialogue Reconstruire les index , vérifiez que l'index correct figure dans la grille Index à reconstruire , puis cliquez sur OK.In the Rebuild Indexes dialog box, verify that the correct index is in the Indexes to be rebuilt grid and click OK.
  7. Cochez la case Compacter les données de la colonne d’objets volumineux pour indiquer que toutes les pages qui contiennent des données LOB seront aussi compactées.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.
  8. Cliquez sur OK.Click OK.

Supprimer la fragmentation à l’aide de Transact-SQLTransact-SQLRemove fragmentation using Transact-SQLTransact-SQL

Pour réorganiser un index fragmentéTo reorganize a fragmented index

L'exemple suivant réorganise l’index IX_Employee_OrganizationalLevel_OrganizationalNode dans la table HumanResources.Employee de la base de données AdventureWorks.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
;

Pour réorganiser tous les index d'une tableTo reorganize all indexes in a table

L'exemple suivant réorganise tous les index dans la table HumanResources.Employee de la base de données AdventureWorks.The following example Reorganize all indexes on the HumanResources.Employee table in the AdventureWorks database.

ALTER INDEX ALL ON HumanResources.Employee
   REORGANIZE
;

Pour reconstruire un index fragmentéTo rebuild a fragmented index

L'exemple suivant reconstruit un seul index portant sur la table Employee de la base de données AdventureWorks.The following example rebuilds a single index on the Employee table in the AdventureWorks database.

ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
REBUILD
;

Pour reconstruire tous les index d'une tableTo rebuild all indexes in a table

L’exemple suivant reconstruit tous les index associés à la table dans la base de données AdventureWorks à l’aide du mot clé ALL.The following example rebuilds all indexes associated with the table in the AdventureWorks database using the ALL keyword. Trois options sont spécifiées.Three options are specified.

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

Pour plus d’informations, consultez ALTER INDEX.For more information, see ALTER INDEX.

Gestion automatique des index et des statistiquesAutomatic index and statistics management

Tirez parti de solutions comme Adaptive Index Defrag pour gérer automatiquement la défragmentation des index et les mises à jour des statistiques pour une ou plusieurs bases de données.Leverage solutions such as Adaptive Index Defrag to automatically manage index defragmentation and statistics updates for one or more databases. Cette procédure choisit automatiquement s’il faut reconstruire ou réorganiser un index en fonction de son niveau de fragmentation, entre autres, et mettre à jour les statistiques avec un seuil linéaire.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.

Voir aussiSee Also