In SQL Server kunt u het SET STATISTICS PROFILE
. gebruiken statement om de profielinformatie voor een T-SQL-statement weer te geven.
STATISTICS PROFILE
werkt voor ad-hocvragen, weergaven en opgeslagen procedures.
Wanneer STATISTICS PROFILE
is ingesteld op ON
, retourneert elke uitgevoerde query zijn reguliere resultatenset, gevolgd door een extra resultatenset die een profiel van de uitvoering van de query laat zien.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Resultaat:
Dit geeft dezelfde kolommen terug als SHOWPLAN_ALL
retourneert plus twee extra (de Rijen en Voert uit kolommen).
Die schermafbeelding is gemaakt toen ik die instructie uitvoerde in Azure Data Studio.
Hier is nog een eenvoudig voorbeeld, deze keer voer ik een instructie uit in mssql-cli (opdrachtregelinterface).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Resultaat (met verticale uitvoer):
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.
Hoe het uit te schakelen
Om STATISTICS PROFILE
te veranderen uit, voer het gewoon opnieuw uit met OFF
in plaats van ON
:
SET STATISTICS PROFILE OFF;
GO
Is STATISTICS PROFILE
Beëindigd?
Hoewel de huidige documentatie er geen melding van maakt, SET STATISTICS PROFILE
lijkt te zijn gepland voor beëindiging in toekomstige showplan-versies.
Volgens dit oude MSDN-artikel, SET STATISTICS PROFILE
is gepland voor afschaffing in toekomstige showplan-versies, en het wordt aanbevolen dat u SET STATISTICS XML
gebruikt in plaats daarvan.
Ook de huidige documentatie voor SET STATISTICS XML
ondersteunt dit:
SET STATISTICS PROFILE en SET STATISTICS XML zijn tegenhangers van elkaar. De eerste produceert tekstuele uitvoer; de laatste produceert XML-uitvoer. In toekomstige versies van SQL Server wordt nieuwe informatie over het uitvoeringsplan voor query's alleen weergegeven via de SET STATISTICS XML-instructie, niet via de SET STATISTICS PROFILE-instructie.
Daarom loont het waarschijnlijk om SET STATISTICS XML
te gebruiken in plaats van SET STATISTICS PROFILE
waar mogelijk.