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.