En SQL Server, puede usar el SET SHOWPLAN_ALL
declaración para devolver información detallada sobre cómo se ejecuta una declaración T-SQL, así como estimaciones de los requisitos de recursos para las declaraciones.
SHOWPLAN_ALL
devuelve información como un conjunto de filas que forman un árbol jerárquico que representa los pasos realizados por el procesador de consultas de SQL Server al ejecutar cada declaración. Es similar a SHOWPLAN_TEXT
, excepto que SHOWPLAN_ALL
devuelve información más detallada (y está diseñado para usarse con aplicaciones que pueden manejar su salida).
Puede configurar SHOWPLAN_ALL
a ON
o OFF
.
Cuando SHOWPLAN_ALL
está ON
, no se ejecutan todas las sentencias T-SQL posteriores. En su lugar, SQL Server devuelve información de ejecución para la instrucción (sin ejecutarla).
Es importante tener en cuenta que SHOWPLAN_ALL
proporciona estimaciones de los requisitos de recursos, y que los requisitos de recursos reales pueden diferir cuando la declaración se ejecuta de hecho.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM Cats;
GO
Tenga en cuenta que SET SHOWPLAN_ALL
no se puede especificar dentro de un procedimiento almacenado y debe ser la única declaración en un lote.
Así es como se ve el resultado en Azure Data Studio:

Y así es como se ve en mssql-cli (interfaz de línea de comandos) cuando se usa la salida vertical:
Commands completed successfully. -[ RECORD 1 ]------------------------- StmtText | SELECT * FROM Cats; StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | 1 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 ]------------------------- 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.
Hay muchas columnas, así que usé salida vertical aquí para que sea más fácil de leer.
Si mi consulta fuera más compleja, se devolverían más filas.
Este es un ejemplo de una consulta (ligeramente) más compleja.
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Resultado:

Cómo apagarlo
Puedes apagarlo usando SET SHOWPLAN_ALL OFF
.
Una vez que haya hecho esto, las declaraciones subsiguientes se ejecutarán normalmente.
SET SHOWPLAN_ALL OFF;
GO
SELECT * FROM Cats;
GO
Resultado:
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) Commands completed successfully.
¿Obsoleto o no?
Según este antiguo artículo de MSDN, SET SHOWPLAN_ALL
está programado para quedar obsoleto en futuras versiones del plan de presentación y se recomienda que use SET SHOWPLAN_XML
en su lugar.
Sin embargo, ese artículo de MSDN es para SQL Server 2008 R2, y mientras escribo esto, no parece haber quedado obsoleto en SQL Server 2019. De hecho, la documentación actual no menciona la obsolescencia y no está incluida. cuando ejecuto una lista de elementos obsoletos en SQL Server.
De cualquier manera, probablemente valga la pena tener esto en cuenta antes de usarlo en versiones futuras.
Plan de Ejecución Gráfico
Si usa una herramienta gráfica como SSMS o Azure Data Studio, es posible que tenga la opción de ver el plan de ejecución de consulta gráfico estimado para la consulta actual.
- En SSMS puede usar Ctrl + L para hacer esto. O puede hacer clic en Mostrar plan de ejecución estimado o haga clic con el botón derecho en la ventana de consulta y seleccione Mostrar plan de ejecución estimado .
- En Azure Data Studio, puede hacer clic en Explicar sobre la ventana de consulta.
También puede usar SET SHOWPLAN_XML ON
para habilitarlo, y SET SHOWPLAN_XML OFF
para desactivarlo.