Jeremy_Clere_7804

Vérifier la fragmentation des index

Discussion created by Jeremy_Clere_7804 on Nov 16, 2016

En cas de ralentissement d'accès à la base de données, vous pouvez vérifier la fragmentation des index.
Voici une requête simple qui répertorie tous les index de chaque table de votre base de données, classés par pourcentage de fragmentation des index:

SELECT dbschemas.[name] as 'Schema',
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID()
ORDER BY indexstats.avg_fragmentation_in_percent desc

testé sur SQL 2012 et SQL 2014

Afin de réduire la fragmentation, vous pouvez avoir à réorganiser ou à reconstruire les index. Le choix entre la réorganisation ou la reconstruction dépend des résultats de la requête.
Pour les indices fortement fragmentés, un processus de reconstruction est nécessaire, sinon la réorganisation de l'indice devrait être suffisante.

Le tableau suivant résume le moment de l'utilisation de chacun:

                 
 

Reference   Values (in %)

 
 

Action

 
 

 SQL   statement

 
 

avg_fragmentation_in_percent > 5 AND <   30

 
 

 Reorganize Index

 
 

 ALTER   INDEX REORGANIZE

 
 

avg_fragmentation_in_percent   > 30

 
 

 Rebuild   Index

 
 

 ALTER   INDEX REBUILD

 


Avertissement: Des dommages irréparables à la base de données peuvent se produire. Cette procédure ne doit être effectuée que par des utilisateurs familiers avec SQL Server Management Studio. Les bases de données doivent être sauvegardées avant d'effectuer cette procédure.

 





Outcomes