DBCC DBREINDEX (Transact-SQL)

S’applique à : ouiSQL Server (toutes les versions prises en charge) OuiAzure SQL Managed Instance

Reconstruit un ou plusieurs index pour une table d'une base de données spécifiée.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez à la place ALTER INDEX.

S’applique à : SQL Server (de SQL Server 2008 à la version actuelle).

Icône du lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

DBCC DBREINDEX   
(   
    table_name   
    [ , index_name [ , fillfactor ] ]  
)  
    [ WITH NO_INFOMSGS ]   

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

table_name
Nom de la table contenant le ou les index spécifiés à reconstruire. Les noms de table doivent suivre les règles applicables aux identificateurs .

index_name
Nom de l'index à reconstruire. Les noms d'index doivent respecter les règles applicables aux identificateurs. Si la valeur de l’argument index_name est spécifiée, vous devez définir table_name. Si la valeur de l’argument index_name n’est pas spécifiée ou est « », tous les index de la table sont reconstruits.

fillfactor
Pourcentage d'espace à utiliser sur chaque page d'index pour le stockage des données lors de la création ou de la reconstruction de l'index. fillfactor remplace le facteur de remplissage utilisé au moment de la création de l’index, devenant ainsi la nouvelle valeur par défaut pour l’index et pour tout autre index non-cluster reconstruit suite à la reconstruction d’un index cluster.
Si fillfactor a la valeur 0, DBCC DBREINDEX utilise la dernière valeur de facteur de remplissage spécifiée pour l’index. Cette valeur est stockée dans la vue de catalogue sys.indexes.
Si la valeur de fillfactor est spécifiée, vous devez définir table_name et index_name. Si la valeur de fillfactor n’est pas spécifiée, le facteur de remplissage par défaut (100) est utilisé. Pour plus d’informations, consultez Spécifier un facteur de remplissage pour un index.

WITH NO_INFOMSGS
Supprime tous les messages d'information dont les niveaux de gravité sont compris entre 0 et 10.

Notes

L'instruction DBCC DBREINDEX reconstruit un index pour une table ou tous les index définis pour une table. En permettant la reconstruction dynamique d'un index, les index qui appliquent les contraintes PRIMARY KEY ou UNIQUE peuvent être reconstruits sans devoir supprimer et recréer ces contraintes. Autrement dit, vous pouvez reconstruire un index sans connaître la structure d'une table ou ses contraintes. Cela peut arriver après une copie en bloc de données dans la table.

DBCC DBREINDEX peut reconstruire tous les index d'une table en une seule instruction. Cette opération est plus simple que de coder plusieurs instructions DROP INDEX et CREATE INDEX. Comme le travail est effectué par une seule instruction, DBCC DBREINDEX est automatiquement atomique, tandis que les instructions individuelles DROP INDEX et CREATE INDEX doivent être intégrées à une transaction pour être atomiques. De même, DBCC DBREINDEX offre un plus grand nombre d'optimisations que les instructions individuelles DROP INDEX et CREATE INDEX.

Contrairement à DBCC INDEXDEFRAG ou à ALTER INDEX avec l'option REORGANIZE, DBCC DBREINDEX est une opération hors ligne. Lorsqu'un index non-cluster est reconstruit, un verrou partagé est maintenu sur la table en question pendant la durée de l'opération. Cela empêche toute modification de la table. Si la reconstruction porte sur l'index cluster, c'est un verrou de table exclusif qui est mis en place. Tout accès à la table étant bloqué, la table est effectivement hors ligne. Pour procéder à une reconstruction d'index en ligne, ou pour contrôler le degré de parallélisme lors de l'opération de reconstruction d'index, utilisez l'instruction ALTER INDEX REBUILD avec l'option ONLINE.

Pour plus d’informations sur la sélection d’une méthode de reconstruction ou de réorganisation d’index, consultez Réorganiser et reconstruire des index.

Restrictions

DBCC DBREINDEX n'est pas pris en charge pour une utilisation sur les objets suivants :

  • Tables système
  • Index spatiaux
  • Index columnstore optimisés en mémoire xVelocity

Jeux de résultats

À moins que NO_INFOMSGS soit spécifié (le nom de table doit être spécifié), DBCC DBREINDEX retourne toujours :

DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

Autorisations

L’appelant doit être propriétaire de la table ou être membre du rôle serveur fixe sysadmin, du rôle de base de données fixe db_owner ou du rôle de base de données fixe db_ddladmin.

Exemples

R. Reconstruction d'un index

Dans l'exemple suivant, l'index cluster Employee_EmployeeID est reconstruit avec un facteur de remplissage de 80 sur la table Employee de la base de données AdventureWorks.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID,80);  
GO  

B. Reconstruction de tous les index

Dans l'exemple suivant, tous les index de la table Employee de AdventureWorks sont reconstruits avec un facteur de remplissage de 70.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);  
GO  

Voir aussi

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)
ALTER INDEX (Transact-SQL)