Les index jouent un rôle crucial dans l’optimisation des performances des requêtes dans SQL Server. Ils permettent de récupérer rapidement des données d’une table de base de données, réduisant ainsi la nécessité de parcourir l’intégralité de la table et améliorant le temps d’exécution global des requêtes. Dans cet article, nous discuterons de l’importance d’avoir le bon index pour une requête et de son impact sur les performances de votre base de données SQL Server.
Prenons en compte une requête simple générée à partir de .NET Entity Framework:
SELECT [GroupBy1].[A1] AS [C1]
FROM (
SELECT MAX([Extent1].[CreatedDate]) AS [A1]
FROM [dbo].[GeoIP2Location] AS [Extent1] WITH (NOLOCK)
) AS [GroupBy1]
Même si cette requête semble simple, elle posait des problèmes sur nos systèmes de production. Pour résoudre ce problème, nous avons créé un index non clusterisé sur la colonne CreatedDate
de la table GeoIP2Location
.
Avant la création de l’index, le plan de requête utilisait l’index clusterisé, ce qui entraînait un coût d’arborescence estimé plus élevé et une utilisation élevée du processeur. Cependant, après la création de l’index, le plan de requête a basculé vers l’utilisation du nouvel index créé, réduisant considérablement le coût d’arborescence estimé et l’utilisation du processeur.
La différence de performance est évidente:
Avant la création de l’index:
- Coût d’arborescence estimé: 219.721
- Mémoire souhaitée: 200
- Utilisation du processeur: Élevée (Figure 2)
Après la création de l’index:
- Coût d’arborescence estimé: 0.0032843
- Mémoire souhaitée: 0
- Utilisation du processeur: Réduite (Figure 3)
En ayant le bon index pour la requête, nous avons pu améliorer les performances de la requête et réduire l’utilisation du processeur. Cependant, il est important de noter que l’ajout d’index doit être fait avec précaution, car cela peut parfois avoir un impact négatif sur les performances globales de la base de données. Il est crucial d’analyser la charge de travail et de prendre en compte les compromis avant d’ajouter des index.
Il est également important de mentionner que l’ajout d’index n’est pas toujours la solution aux performances médiocres des requêtes. D’autres facteurs tels que l’optimisation des requêtes, la conception de la base de données et les ressources matérielles doivent également être pris en compte.
En conclusion, avoir le bon index pour une requête est essentiel pour optimiser les performances de SQL Server. Cela peut considérablement améliorer le temps d’exécution des requêtes et réduire l’utilisation du processeur. Cependant, il est important d’évaluer attentivement l’impact de l’ajout d’index et de prendre en compte d’autres facteurs pouvant affecter les performances globales de la base de données.