DBCC DBREINDEX (Transact-SQL)

S’applique à :SQL ServerAzure 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 ALTER INDEX à la place.

S’applique à : SQL Server 2008 (10.0.x) et ultérieur.

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 index_name n’est pas spécifié 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 du 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 fillfactor n’est pas spécifié, 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

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. C’est plus facile que de coder plusieurs instructions DROP INDEX et CREATE INDEX. Comme le travail est effectué par une seule instruction, DBCC DBREINDEX est automatiquement atomique, alors que les instructions individuelles DROP INDEX et CREATE INDEX doivent être incluses dans 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 connexion. Si un index non cluster est reconstruit, un verrou partagé est placé sur la table en question pendant 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 effectuer 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 à mémoire optimisée

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. Regénérer 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 AdventureWorks2022.

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

B. Reconstruire tous les index

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

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

Voir aussi