par Guillaume Lelarge.

Obtenir un plan d'exécution


Avec SQL Server, il existe plusieurs façons de récupérer un plan d'exécution. Les deux méthodes les plus importantes sont :

Graphiquement

La représentation graphique des plans d'exécution de SQL Server est facilement accessible dans Management Studio mais elle est difficile à partager car les informations de prédicat sont seulement visibles quand la souris est au-dessus d'une opération spécifique.

En tableau

Le plan d'exécution en tableau est difficile à lire mais facile à copier car il montre toutes les informations adéquates d'un seul coup.

Graphiquement

Le plan d'exécution graphique est généré avec l'un des deux boutons surlignés ci-dessous.

Le bouton gauche récupère le plan d'exécution de la requête sélectionnée. Le bouton droit capture le plan la prochaine fois qu'une requête est exécutée.

Dans les deux cas, la représentation graphique du plan d'exécution apparaît dans l'onglet « Execution plan » du panneau « Results ».

La représentation graphique est facile à lire avec un peu de pratique. Néanmoins, elle affiche seulement les informations essentielles : les opéra­tions et les tables ou index sur lesquelles elles agissent.

Management Studio affiche plus d'informations lorsque vous déplacez la souris au-dessus d'une opération. Cela rend difficile le partage d'un plan d'exécution dans tous ses détails.

En tableau

La représentation en tableau d'un plan d'exécution de SQL Server est récu­péré en profilant l'exécution d'une requête. La commande suivante l'active :

SET STATISTICS PROFILE ON

Le plan d'exécution en tableau est difficilement utilisable dans SQL Server Management Studio car la colonne StmtText est trop large pour tenir sur un écran.

L'avantage de cette représentation est qu'elle peut être copiée sans perdre d'informations adéquates. Cela se révèle très pratique si vous voulez poster un plan d'exécution SQL Server sur un forum ou sur une plateforme similaire. Dans ce cas, il est souvent suffisant de copier la colonne StmtText et de la reformater un peu :

select COUNT(*) from employes;
  |--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(...))
       |--Stream Aggregate(DEFINE:([Expr1005]=Count(*)))
            |--Index Scan(OBJECT:([employes].[employes_pk]))
SET STATISTICS PROFILE OFF

À propos de l'auteur

Photo de Markus Winand

Markus Winand teaches efficient SQL—inhouse and online. He minimizes the development time using modern SQL and optimizes the runtime with smart indexing—for that he also published the book SQL Performance Explained.

Livre de Markus

Couverture du livre « SQL : Au cœur des performances »

L'essence de SQL tuning dans 200 pages.

Acheter de Markus
(Livre de poche et PDF)

Achetez chez Amazon
(Seulement en poche)

“Use The Index, Luke!” by Markus Winand and translated by Guillaume Lelarge is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Privacy | CC-BY-NC-ND 3.0 license