I SQL Server kan du bruge SET STATISTICS PROFILE
sætning for at vise profiloplysningerne for en T-SQL-sætning.
STATISTICS PROFILE
fungerer til ad hoc-forespørgsler, visninger og lagrede procedurer.
Når STATISTICS PROFILE
er indstillet til ON
, returnerer hver udført forespørgsel sit normale resultatsæt efterfulgt af et ekstra resultatsæt, der viser en profil af forespørgselsudførelsen.
Eksempel
Her er et simpelt eksempel at demonstrere.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Resultat:
Dette returnerer de samme kolonner som SHOWPLAN_ALL
returnerer plus to ekstra (rækkerne og Udfører kolonner).
Det skærmbillede blev taget, da jeg kørte den sætning i Azure Data Studio.
Her er endnu et simpelt eksempel, denne gang kører jeg en sætning i mssql-cli (kommandolinjegrænseflade).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Resultat (ved hjælp af lodret output):
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.
Sådan slukker du det
For at slå STATISTICS PROFILE
slukket, skal du blot køre det igen med OFF
i stedet for ON
:
SET STATISTICS PROFILE OFF;
GO
Er STATISTICS PROFILE
Forældet?
Selvom den nuværende dokumentation ikke nævner det, SET STATISTICS PROFILE
ser ud til at være planlagt til udfasning i fremtidige showplan-versioner.
Ifølge denne gamle MSDN-artikel, SET STATISTICS PROFILE
er planlagt til udfasning i fremtidige showplan-versioner, og det anbefales, at du bruger SET STATISTICS XML
i stedet.
Også den aktuelle dokumentation for SET STATISTICS XML
understøtter dette:
SET STATISTICS PROFIL og SET STATISTICS XML er modstykker til hinanden. Førstnævnte producerer tekstoutput; sidstnævnte producerer XML-output. I fremtidige versioner af SQL Server vil nye planoplysninger om udførelse af forespørgsler kun blive vist gennem SET STATISTICS XML-sætningen, ikke SET STATISTICS PROFILE-sætningen.
Derfor kan det nok betale sig at bruge SET STATISTICS XML
i stedet for SET STATISTICS PROFILE
hvor det er muligt.