V SQL Server můžete použít SET STATISTICS PROFILE
příkaz k zobrazení informací o profilu pro příkaz T-SQL.
STATISTICS PROFILE
funguje pro ad hoc dotazy, pohledy a uložené procedury.
Když STATISTICS PROFILE
je nastaveno na ON
, každý provedený dotaz vrátí svou běžnou sadu výsledků, po níž následuje další sada výsledků, která zobrazuje profil provádění dotazu.
Příklad
Zde je jednoduchý příklad k demonstraci.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Výsledek:
Tím se vrátí stejné sloupce jako SHOWPLAN_ALL
vrátí plus dva navíc (Řádky a Spustí sloupce).
Tento snímek obrazovky byl pořízen, když jsem spustil tento příkaz v Azure Data Studio.
Zde je další jednoduchý příklad, tentokrát jsem spustil příkaz v mssql-cli (rozhraní příkazového řádku).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Výsledek (při použití vertikálního výstupu):
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.
Jak to vypnout
Chcete-li změnit STATISTICS PROFILE
vypnout, jednoduše jej spusťte znovu pomocí OFF
místo ON
:
SET STATISTICS PROFILE OFF;
GO
Je STATISTICS PROFILE
Zastaralé?
Ačkoli se o tom v aktuální dokumentaci nezmiňuje, SET STATISTICS PROFILE
zdá se, že v budoucích verzích showplanu je naplánováno ukončení podpory.
Podle tohoto starého článku MSDN SET STATISTICS PROFILE
je naplánováno ukončení podpory v budoucích verzích showplanu a je doporučeno použít SET STATISTICS XML
místo toho.
Také aktuální dokumentace pro SET STATISTICS XML
podporuje toto:
SET STATISTICS PROFILE a SET STATISTICS XML jsou vzájemné protějšky. První z nich vytváří textový výstup; ten druhý vytváří výstup XML. V budoucích verzích SQL Serveru se budou informace o novém plánu provádění dotazů zobrazovat pouze prostřednictvím příkazu XML SET STATISTICS, nikoli příkazu SET STATISTICS PROFILE.
Proto se asi vyplatí použít SET STATISTICS XML
místo SET STATISTICS PROFILE
kde je to možné.