Réindexer toutes les tables d'une base de données

Contenu du snippet

lors d'insertions ou de suppressions multiples dans une base de données, reconstruire les index d'une table permet d'améliorer les performances.
ce bout de script permet de charger l'ensemble des tables utilisateurs de la base possédant un index et de lancer la commande DBCC REINDEX

Source / Exemple :


-- Varibale pour stocker le nom de la table
Declare @NomTable VarChar(100)
-- Variable pour stocker la requete de réindexation
Declare @Requete VarChar(5000)
-- Curseur listant toutes les tables utilisateurs de la base possédant un index
Declare LstTable Cursor For
	Select Distinct	SysObjects.Name 
	From SysindexKeys
	Inner Join SysIndexes On SysindexKeys.IndID = SysIndexes.IndId
	Inner Join SysColumns On SysindexKeys.ColID = SysColumns.ColID
	Inner Join SysObjects On SysindexKeys.ID = SysObjects.ID 
        and SysObjects.xtype = 'U'
	And Syscolumns.ID = SysObjects.ID And SysObjects.ID = SysIndexes.ID
	Where SysIndexes.Status & 8388608 = 0
	Order By SysObjects.Name
-- Ouverture du curseur
Open LstTable

Fetch Next From LstTable Into @NomTable
While @@Fetch_status = 0
Begin	
	Set NoCount ON
        -- Parcours du curseur et exécution de la requete pour chaque table
        -- Les options de DBCC DBREINDEX peuvent être ajustées suivant les besoins. CF (Syntaxe de la commande)
        Set @Requete = 'DBCC DBREINDEX (' + @NomTable + ','''',0)'
	Print @NomTable
	Exec (@Requete)
	Set NoCount OFF
	Fetch Next From LstTable Into @NomTable

End
Close LstTable
Deallocate LstTable

Conclusion :


perso, j'exécute ce traitement régulièrement sur les bases de données pour éviter la dégradation des perf liées à des index morcelés.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.