In SQL Server è possibile utilizzare il SET STATISTICS PROFILE
per visualizzare le informazioni sul profilo per un'istruzione T-SQL.
STATISTICS PROFILE
funziona per query, visualizzazioni e stored procedure ad hoc.
Quando STATISTICS PROFILE
è impostato su ON
, ogni query eseguita restituisce il proprio set di risultati regolare, seguito da un set di risultati aggiuntivo che mostra un profilo dell'esecuzione della query.
Esempio
Ecco un semplice esempio da dimostrare.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Risultato:
Questo restituisce le stesse colonne che SHOWPLAN_ALL
restituisce più due extra (le Righe e Esegue colonne).
Lo screenshot è stato acquisito durante l'esecuzione dell'istruzione in Azure Data Studio.
Ecco un altro semplice esempio, questa volta eseguo un'istruzione in mssql-cli (interfaccia a riga di comando).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Risultato (usando l'output verticale):
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.
Come spegnerlo
Per trasformare STATISTICS PROFILE
off, eseguilo semplicemente di nuovo usando OFF
invece di ON
:
SET STATISTICS PROFILE OFF;
GO
È STATISTICS PROFILE
Deprecato?
Sebbene la documentazione attuale non ne faccia menzione, SET STATISTICS PROFILE
sembra essere programmato per il ritiro nelle versioni future dello showplan.
Secondo questo vecchio articolo MSDN, SET STATISTICS PROFILE
è programmato per il ritiro nelle versioni future di showplan e si consiglia di utilizzare SET STATISTICS XML
invece.
Inoltre, la documentazione corrente per SET STATISTICS XML
supporta questo:
SET STATISTICS PROFILE e SET STATISTICS XML sono controparti l'uno dell'altro. Il primo produce output testuale; quest'ultimo produce output XML. Nelle versioni future di SQL Server, le nuove informazioni sul piano di esecuzione delle query verranno visualizzate solo tramite l'istruzione SET STATISTICS XML, non l'istruzione SET STATISTICS PROFILE.
Pertanto, probabilmente conviene usare SET STATISTICS XML
invece di SET STATISTICS PROFILE
ove possibile.