# SQL Server : quand reconstruire vos indexes ?

> Plus votre base de données va être utilisée plus vos indexes risque d’être fragmentés, une fragmentation importante peut diminuer fortement les performances de vos…

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [SQL Server : quand reconstruire vos indexes ?](https://jeromegiacomini.net/fr/articles/2019/07/01/sql-server-quand-reconstruire-vos-indexes)
- Publié le: 2019-07-01
- Dernière modification: 2026-09-05
- Thèmes: .NET, DevOps, SQL

Plus votre base de données va être utilisée plus vos indexes risque d’être fragmentés, 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 fragmentations des indexes de nos tables
- réorganiser / reconstruire un index


## Diagnostiquer le niveau de fragmentation

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

```sql

SELECT avg_fragmentation_in_percent AS FragmentationInPercent,
OBJECT_SCHEMA_NAME  (Stats.object_id) AS TableName,
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 un résultat sous cette forme :

![](https://jeromegiacomini.net/Blog/wp-content/uploads/2019/06/indexResult.png)

La documentation officielle estime qu’un index fragmenter à 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

## Réorganiser les index d’une table

**Réorganiser les index d&#8217;une table :**

```sql

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


**Réorganiser l&#8217;index d&#8217;une table :**

```sql

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

GO
```


## Reconstruire les index d’une table

**Reconstruire les index d&#8217;une table :**

```sql

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


**Reconstruire l&#8217;index d&#8217;une table :**

```sql

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

GO
```


Happy coding.

Pour aller plus loin :
- [Lien vers la documentation officielle](https://docs.microsoft.com/fr-fr/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-2017)
