I SQL Server kan du använda SET STATISTICS PROFILE
uttalande för att visa profilinformationen för en T-SQL-sats.
STATISTICS PROFILE
fungerar för ad hoc-frågor, vyer och lagrade procedurer.
När STATISTICS PROFILE
är inställd på ON
, returnerar varje utförd fråga sin vanliga resultatuppsättning, följt av en ytterligare resultatuppsättning som visar en profil för frågekörningen.
Exempel
Här är ett enkelt exempel att visa.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Resultat:
Detta returnerar samma kolumner som SHOWPLAN_ALL
returnerar plus två extra (raderna och Kör kolumner).
Den skärmdumpen togs när jag körde den satsen i Azure Data Studio.
Här är ett annat enkelt exempel, den här gången kör jag en sats i mssql-cli (kommandoradsgränssnitt).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Resultat (med vertikal utdata):
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.
Hur man stänger av det
För att aktivera STATISTICS PROFILE
av, kör det helt enkelt igen med OFF
istället för ON
:
SET STATISTICS PROFILE OFF;
GO
Är STATISTICS PROFILE
Utfasad?
Även om den aktuella dokumentationen inte nämner det, SET STATISTICS PROFILE
verkar vara schemalagd för utfasning i framtida showplan-versioner.
Enligt denna gamla MSDN-artikel, SET STATISTICS PROFILE
är schemalagd för utfasning i framtida showplan-versioner, och det rekommenderas att du använder SET STATISTICS XML
istället.
Även den aktuella dokumentationen för SET STATISTICS XML
stöder detta:
SET STATISTICS PROFILE och SET STATISTICS XML är motsvarigheter till varandra. Den förra producerar textutdata; den senare producerar XML-utdata. I framtida versioner av SQL Server kommer ny frågekörningsplansinformation endast att visas via SET STATISTICS XML-satsen, inte SET STATISTICS PROFILE-satsen.
Därför lönar det sig förmodligen att använda SET STATISTICS XML
istället för SET STATISTICS PROFILE
där det är möjligt.