Published on

December 3, 2015

Comprendre les avantages et les coûts des index filtrés dans SQL Server

Les index filtrés existent depuis plusieurs années dans SQL Server, mais leurs véritables coûts et avantages sont souvent négligés. Dans cet article, nous explorerons les avantages et les inconvénients de l’utilisation des index filtrés dans votre base de données SQL Server.

Les avantages des index filtrés

Les index filtrés sont principalement utilisés pour améliorer les performances des requêtes qui ne nécessitent qu’une petite partie des données d’une table. Cela est particulièrement utile dans les scénarios où vous avez de grandes tables avec des statuts spécifiques ou des termes de recherche étroits qui adressent systématiquement un ensemble de données sélectif.

En créant un index filtré, vous pouvez améliorer considérablement les performances des requêtes ciblant des sous-ensembles de données spécifiques. Cela peut se traduire par des temps d’exécution de requête plus rapides et une consommation de ressources réduite.

Un exemple de scénario

Prenons en compte un scénario où vous avez une grande table de commandes de vente avec des millions de lignes. Vous exécutez fréquemment une requête pour récupérer les commandes non expédiées pour le service d’expédition. Initialement, la requête effectue une analyse de l’index clusterisé, ce qui entraîne une utilisation élevée des ressources.

Pour optimiser cette requête, vous pouvez créer un index non clusterisé sur la colonne “Statut”. Cela améliore les performances de la requête en réduisant le coût de l’arborescence et le nombre de lectures logiques.

Cependant, si vous souhaitez optimiser davantage la requête, vous pouvez créer un index filtré spécifiquement pour les commandes non expédiées. Cet index filtré aura une performance encore meilleure par rapport à l’index non clusterisé, ce qui entraînera une réduction significative des lectures logiques.

Les coûts des index filtrés

Bien que les index filtrés offrent des avantages en termes de performances, ils ont également certains coûts. L’un des principaux inconvénients est l’impact sur les performances d’écriture. Chaque fois qu’une opération d’écriture est effectuée sur des colonnes incluses dans un index filtré, des opérations d’écriture supplémentaires sont nécessaires pour mettre à jour l’index.

De plus, les index filtrés contiennent des métadonnées supplémentaires sous la forme d’une clause WHERE, qui peut participer aux opérations d’écriture. Cela peut entraîner une latence ou une contention inattendue car SQL Server doit vérifier des valeurs de données supplémentaires avant de mettre à jour l’index filtré.

Considérations pour l’utilisation des index filtrés

Lorsque vous envisagez d’utiliser des index filtrés, il est important d’analyser minutieusement les opérations d’écriture sur la table. Cela permettra de s’assurer que les avantages de l’index filtré l’emportent sur les coûts potentiels.

Il est également crucial d’être vigilant et d’éviter tout problème de performance inattendu. Même si les opérations d’écriture n’affectent pas les colonnes d’un index filtré, il est toujours important de les surveiller et de les optimiser pour éviter tout impact négatif sur les performances globales.

Conclusion

Les index filtrés peuvent être un outil puissant pour améliorer les performances des requêtes dans SQL Server. Cependant, il est important de bien considérer les coûts et les avantages avant de les mettre en œuvre dans votre base de données.

En comprenant les compromis potentiels et en effectuant des recherches approfondies, vous pouvez prendre des décisions éclairées sur quand et comment utiliser efficacement les index filtrés.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.