En SQL Server, puede usar el SET STATISTICS PROFILE
declaración para mostrar la información de perfil para una declaración T-SQL.
STATISTICS PROFILE
funciona para consultas ad hoc, vistas y procedimientos almacenados.
Cuando STATISTICS PROFILE
está configurado en ON
, cada consulta ejecutada devuelve su conjunto de resultados habitual, seguido de un conjunto de resultados adicional que muestra un perfil de la ejecución de la consulta.
Ejemplo
Aquí hay un ejemplo simple para demostrar.
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Resultado:

Esto devuelve las mismas columnas que SHOWPLAN_ALL
devuelve más dos extra (las Filas y ejecuta columnas).
Esa captura de pantalla se tomó cuando ejecuté esa declaración en Azure Data Studio.
Aquí hay otro ejemplo simple, esta vez ejecuto una instrucción en mssql-cli (interfaz de línea de comandos).
SET STATISTICS PROFILE ON;
GO
SELECT * FROM Cats;
GO
Resultado (usando salida vertical):
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.
Cómo apagarlo
Para convertir STATISTICS PROFILE
apagado, simplemente ejecútelo de nuevo usando OFF
en lugar de ON
:
SET STATISTICS PROFILE OFF;
GO
Es STATISTICS PROFILE
¿Obsoleto?
Aunque la documentación actual no lo menciona, SET STATISTICS PROFILE
parece estar programado para dejar de estar disponible en futuras versiones del plan de presentación.
De acuerdo con este antiguo artículo de MSDN, SET STATISTICS PROFILE
está programado para quedar obsoleto en futuras versiones del plan de presentación, y se recomienda que use SET STATISTICS XML
en su lugar.
Además, la documentación actual para SET STATISTICS XML
apoya esto:
SET STATISTICS PROFILE y SET STATISTICS XML son equivalentes entre sí. El primero produce salida textual; el último produce una salida XML. En versiones futuras de SQL Server, la nueva información del plan de ejecución de consultas solo se mostrará a través de la declaración XML SET STATISTICS, no la declaración SET STATISTICS PROFILE.
Por lo tanto, probablemente valga la pena usar SET STATISTICS XML
en lugar de SET STATISTICS PROFILE
donde sea posible.