In SQL Server können Sie das SET STATISTICS PROFILE verwenden -Anweisung, um die Profilinformationen für eine T-SQL-Anweisung anzuzeigen.
STATISTICS PROFILE funktioniert für Ad-hoc-Abfragen, Ansichten und gespeicherte Prozeduren.
Wenn STATISTICS PROFILE auf ON eingestellt ist , gibt jede ausgeführte Abfrage ihre reguläre Ergebnismenge zurück, gefolgt von einer zusätzlichen Ergebnismenge, die ein Profil der Abfrageausführung zeigt.
Beispiel
Hier ist ein einfaches Beispiel zur Veranschaulichung.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO Ergebnis:
Dies gibt dieselben Spalten zurück wie SHOWPLAN_ALL gibt plus zwei zusätzliche zurück (die Zeilen und Hinrichtungen Spalten).
Dieser Screenshot wurde aufgenommen, als ich diese Anweisung in Azure Data Studio ausgeführt habe.
Hier ist ein weiteres einfaches Beispiel, dieses Mal führe ich eine Anweisung in mssql-cli (Befehlszeilenschnittstelle) aus.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO Ergebnis (bei vertikaler Ausgabe):
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.
Wie man es ausschaltet
STATISTICS PROFILE umschalten aus, führen Sie es einfach erneut mit OFF aus statt ON :
SET STATISTICS PROFILE OFF;
GO Ist STATISTICS PROFILE Veraltet?
Obwohl die aktuelle Dokumentation dies nicht erwähnt, SET STATISTICS PROFILE scheint in zukünftigen Showplan-Versionen als veraltet markiert zu sein.
Laut diesem alten MSDN-Artikel SET STATISTICS PROFILE soll in zukünftigen Showplan-Versionen veraltet sein, und es wird empfohlen, dass Sie SET STATISTICS XML verwenden stattdessen.
Außerdem die aktuelle Dokumentation für SET STATISTICS XML unterstützt dies:
SET STATISTICS PROFILE und SET STATISTICS XML sind Gegenstücke zueinander. Ersteres erzeugt eine Textausgabe; letzteres erzeugt eine XML-Ausgabe. In zukünftigen Versionen von SQL Server werden Informationen zum neuen Abfrageausführungsplan nur über die SET STATISTICS XML-Anweisung angezeigt, nicht über die SET STATISTICS PROFILE-Anweisung.
Daher lohnt es sich wahrscheinlich, SET STATISTICS XML zu verwenden statt SET STATISTICS PROFILE wo möglich.