sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es el PERFIL DE ESTADÍSTICAS en SQL Server?

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.