Loupe

SQL SERVER : quand reconstruire vos index ?

Plus votre base de données va être utilisée, plus vos index risquent d’être fragmentés. Or, une fragmentation importante peut diminuer fortement les performances de vos requêtes et ralentir l’ensemble de votre application.

Dans cet article nous verrons comment :

  • diagnostiquer la fragmentation des index de nos tables
  • réorganiser / reconstruire un index

Diagnostiquer le niveau de fragmentation

Avant de reconstruire les index, il faut identifier quels sont ceux qui sont fragmentés. Pour ce faire, nous allons interroger notre base de données pour qu’elle puisse nous donner le niveau de fragmentation de chaque index.

SELECT avg_fragmentation_in_percent AS FragmentationInPercent,
OBJECT_SCHEMA_NAME (Stats.object_id) AS SchemaName, 
OBJECT_NAME (Stats.object_id) AS TableName,
Indexes.name
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('dbo.T_CLIENT_CLI') , NULL, NULL , 'LIMITED') AS Stats
INNER JOIN sys.indexes AS Indexes ON Stats.object_id = Indexes.object_id AND Stats.index_id = Indexes.index_id
ORDER BY avg_fragmentation_in_percent DESC

Après avoir exécuté la requête, vous devriez obtenir un résultat sous cette forme :

La documentation officielle estime qu’un index fragmenté à plus de 30 % doit être “reconstruit”, tandis qu’un index qui a une fragmentation entre 5% et 30% peut être uniquement “réorganisé”.

Attention :il est contreproductif reconstruire des indexes non fragmenté !

Réorganiser les index d’une table

Réorganiser les index d’une table :

ALTER INDEX ALL ON [NomDuSchema].[NomDeLaTable] 
REORGANIZE ;  
GO 

Réorganiser l'index d'une table

ALTER INDEX IX_MonIndex
ON [NomDuSchema].[NomDeLaTable] 
REORGANIZE ;  
GO 

Reconstruire les index d'une table

Reconstruire les index d'une table :

ALTER INDEX ALL ON [NomDuSchema].[NomDeLaTable] 
REBUILD ;  
GO 

Reconstruite l'index d'une table :

ALTER INDEX IX_MonIndex
ON [NomDuSchema].[NomDeLaTable] 
REBUILD ;  
GO

Happy coding.

Lien vers la documentation officielle

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus