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