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

Servidor SQL SHOWPLAN_TEXT

En SQL Server, puede usar el SET SHOWPLAN_TEXT declaración para devolver información detallada sobre cómo se ejecuta una declaración T-SQL.

SHOWPLAN_TEXT 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_ALL , excepto que devuelve menos detalles. Por lo tanto, está dirigido a aplicaciones que no pueden manejar los detalles adicionales que SHOWPLAN_ALL proporciona.

Puede configurar SHOWPLAN_TEXT a ON o OFF .

Cuando SHOWPLAN_TEXT 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).

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SET SHOWPLAN_TEXT ON;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Tenga en cuenta que SET SHOWPLAN_TEXT 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):

Commands completed successfully.
+------------+
| StmtText   |
|------------|
| 
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;            |
+------------+
(1 row affected)
+--------------------------------------------------------------------------------------------------------------------------------------+
| StmtText                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------|
|   |--Hash Match(Inner Join, HASH:([d].[DogName])=([Expr1003]), RESIDUAL:([Expr1003]=[Test].[dbo].[Dogs].[DogName] as [d].[DogName])) |
|        |--Table Scan(OBJECT:([Test].[dbo].[Dogs] AS [d]))                                                                            |
|        |--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(nvarchar(255),[Test].[dbo].[Cats].[CatName] as [c].[CatName],0)))       |
|             |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F] AS [c]))                                |
+--------------------------------------------------------------------------------------------------------------------------------------+
(4 rows affected)
Commands completed successfully.

Cómo apagarlo

Puedes apagarlo usando SET SHOWPLAN_TEXT OFF .

Una vez que haya hecho esto, las declaraciones subsiguientes se ejecutarán normalmente.

SET SHOWPLAN_TEXT OFF;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Resultado:

Commands completed successfully.
+---------+-----------+---------+-----------+-----------+
| CatId   | CatName   | DogId   | DogName   | GoodDog   |
|---------+-----------+---------+-----------+-----------|
| 2       | Fluffy    | 2       | Fluffy    | 0         |
+---------+-----------+---------+-----------+-----------+
(1 row affected)
Commands completed successfully.

¿Obsoleto o no?

Según este antiguo artículo de MSDN, SET SHOWPLAN_TEXT 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.