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érations 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écupé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