Dans SQL Server, vous pouvez utiliser le SET STATISTICS PROFILE
pour afficher les informations de profil d'une instruction T-SQL.
STATISTICS PROFILE
fonctionne pour les requêtes ad hoc, les vues et les procédures stockées.
Lorsque STATISTICS PROFILE
est réglé sur ON
, chaque requête exécutée renvoie son jeu de résultats normal, suivi d'un jeu de résultats supplémentaire qui affiche un profil de l'exécution de la requête.
Exemple
Voici un exemple simple à démontrer.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Résultat :
Cela renvoie les mêmes colonnes que SHOWPLAN_ALL
renvoie plus deux supplémentaires (les Rows et exécute colonnes).
Cette capture d'écran a été prise lorsque j'ai exécuté cette instruction dans Azure Data Studio.
Voici un autre exemple simple, cette fois j'exécute une instruction dans mssql-cli (interface de ligne de commande).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Résultat (en utilisant la sortie verticale) :
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) -[ RECORD 1 ]------------------------- Rows | 3 Executes | 1 StmtText | SELECT * FROM Cats StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | NULL DefinedValues | NULL EstimateRows | 3 EstimateIO | NULL EstimateCPU | NULL AvgRowSize | NULL TotalSubtreeCost | 0.0032853 OutputList | NULL Warnings | NULL Type | SELECT Parallel | 0 EstimateExecutions | NULL -[ RECORD 2 ]------------------------- Rows | 3 Executes | 1 StmtText | |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])) StmtId | 1 NodeId | 2 Parent | 1 PhysicalOp | Clustered Index Scan LogicalOp | Clustered Index Scan Argument | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]) DefinedValues | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] EstimateRows | 3 EstimateIO | 0.003125 EstimateCPU | 0.0001603 AvgRowSize | 142 TotalSubtreeCost | 0.0032853 OutputList | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] Warnings | NULL Type | PLAN_ROW Parallel | 0 EstimateExecutions | 1 (2 rows affected) Commands completed successfully.
Comment l'éteindre
Pour activer STATISTICS PROFILE
off, relancez-le simplement en utilisant OFF
au lieu de ON
:
SET STATISTICS PROFILE OFF;
GO
Est STATISTICS PROFILE
Obsolète ?
Bien que la documentation actuelle n'en fasse aucune mention, SET STATISTICS PROFILE
semble devoir être abandonné dans les futures versions de showplan.
Selon cet ancien article MSDN, SET STATISTICS PROFILE
est prévu pour être obsolète dans les futures versions de showplan, et il est recommandé d'utiliser SET STATISTICS XML
à la place.
Aussi, la documentation actuelle pour SET STATISTICS XML
prend en charge ceci :
SET STATISTICS PROFILE et SET STATISTICS XML sont des équivalents l'un de l'autre. Le premier produit une sortie textuelle; ce dernier produit une sortie XML. Dans les futures versions de SQL Server, les nouvelles informations sur le plan d'exécution des requêtes ne seront affichées que via l'instruction XML SET STATISTICS, et non via l'instruction SET STATISTICS PROFILE.
Par conséquent, il est probablement avantageux d'utiliser SET STATISTICS XML
au lieu de SET STATISTICS PROFILE
si possible.