Published on

March 1, 2013

Optimisation des performances des requêtes SQL Server

Avez-vous déjà rencontré une requête SQL Server qui prend un temps d’exécution plus long que prévu? Il peut être frustrant et chronophage de résoudre de tels problèmes de performance. Dans cet article, nous explorerons un scénario réel où une requête s’exécutait beaucoup plus lentement que prévu et discuterons des étapes prises pour optimiser ses performances.

Le problème provenait d’une instruction SELECT complexe avec plusieurs jointures, une vue et des sous-requêtes corrélées. La requête faisait partie d’un logiciel de fournisseur et causait des retards importants dans le traitement des données du service financier. Malgré l’analyse du plan d’exécution de la requête, il n’y avait pas de goulots d’étranglement de performance évidents tels que des analyses d’index coûteuses ou des recherches de clés.

La première étape du processus d’optimisation a été de se concentrer sur la partie la plus coûteuse de la requête, qui consistait à accéder aux données d’une vue. La vue était composée de deux tables avec un nombre modéré de lignes. En remplaçant la vue par une expression de table commune (CTE) et en utilisant un indice d’index pour forcer l’utilisation d’un index spécifique, le temps d’exécution de la requête s’est nettement amélioré.

Cependant, la requête optimisée n’a pas réussi à se terminer avec succès dans l’environnement de production. Cela a conduit à une enquête plus approfondie sur le plan d’exécution et la structure des tables impliquées. En traçant les index de chaque table, leurs clés et le nombre de lignes, il a été découvert qu’un opérateur de hachage accédant à la CTE était à l’origine de la dégradation des performances. L’ajout d’un indice de jointure INNER LOOP à la section de la requête utilisant la CTE a entraîné une amélioration remarquable, réduisant le temps d’exécution à seulement 8 secondes.

Il est important de noter que l’utilisation d’indications de requête, telles que des indications de jointure, doit être abordée avec prudence et considérée comme un dernier recours. Dans ce cas particulier, l’utilisation de l’indication FORCE ORDER était justifiée en raison de l’amélioration significative des performances qu’elle fournissait. Cependant, il est généralement recommandé de s’appuyer sur l’optimiseur SQL Server pour générer des plans de requête efficaces.

La mise à jour des statistiques est une approche courante pour améliorer les performances des requêtes. Cependant, dans certains cas, la simple mise à jour des statistiques peut ne pas être suffisante. Une approche plus sophistiquée, telle que l’augmentation du taux d’échantillonnage ou la modification du code ou des index, peut être nécessaire pour guider l’optimiseur dans la production d’un meilleur plan.

Il convient de mentionner que les problèmes matériels peuvent également avoir un impact sur les performances des requêtes. Cependant, dans ce scénario, il était évident que la différence drastique de temps d’exécution était principalement due à un plan de requête sous-optimal. En priorisant l’analyse du plan d’exécution et en effectuant des optimisations ciblées, le problème a été résolu avec succès.

L’optimisation des performances des requêtes SQL Server peut être une tâche difficile, mais avec une approche systématique et une compréhension approfondie de la structure de la base de données, il est possible d’obtenir des améliorations significatives. En se concentrant sur le plan d’exécution, en analysant les index et en considérant les indications de requête comme dernier recours, vous pouvez résoudre efficacement les problèmes de performance et garantir un traitement efficace des données.

N’oubliez pas que chaque requête est unique et que les techniques d’optimisation utilisées peuvent varier. Il est essentiel d’analyser en profondeur la requête spécifique et son plan d’exécution pour identifier les stratégies d’optimisation les plus efficaces.

Merci de nous avoir lu! Nous espérons que cet article vous a fourni des informations précieuses sur l’optimisation des performances des requêtes SQL Server. Restez à l’écoute pour plus d’articles informatifs sur SQL Server et la gestion de bases de données.

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.