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

Cómo funciona SHOWPLAN_XML en SQL Server

En SQL Server, puede usar el SET SHOWPLAN_XML declaración para devolver información detallada sobre cómo se ejecutará una declaración T-SQL, en forma de un documento XML bien definido.

Es similar a SHOWPLAN_ALL , excepto que SHOWPLAN_ALL devuelve su conjunto de datos de filas que forman un árbol jerárquico.

Puede configurar SHOWPLAN_XML a ON o OFF .

Cuando SHOWPLAN_XML 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_XML ON;
GO

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

Tenga en cuenta que SET SHOWPLAN_XML no se puede especificar dentro de un procedimiento almacenado y debe ser la única declaración en un lote.

El resultado que obtenga puede depender de la herramienta que esté utilizando para acceder a SQL Server.

Cuando ejecuto esto en Azure Data Studio, puedo hacer clic en las distintas pestañas para obtener una vista diferente del resultado.

Los Resultados La pestaña muestra la cadena XML sin formato:

Al hacer clic en la fila, se abre el documento XML en una nueva pestaña:

El Plan de consulta La pestaña muestra una representación gráfica del resultado:

Las operaciones principales La pestaña presenta los datos en formato tabular que le permite ordenar los datos por varias métricas:

¿No funciona?

Si no funciona para usted, asegúrese de Incluir plan de ejecución real no está seleccionado en SSMS. Cuando se selecciona esto, SET SHOWPLAN_XML ON no produce salida XML Showplan.

Cómo apagarlo

Puede desactivarlo usando SET SHOWPLAN_XML OFF .

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

SET SHOWPLAN_XML 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.

Plan de Ejecución en GUIs

Si usa una herramienta gráfica como SSMS o Azure Data Studio, es posible que tenga una opción de acceso directo para ver el plan de ejecución de consultas gráficas estimado. Esto le permite ver el plan de consulta sin necesidad de ejecutar SET SHOWPLAN_XML ON .

Para ejecutar un plan de consulta estimado:

  • 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 . Esto le evitará tener que activar SHOWPLAN_XML encendido y apagado en su código.
  • En Azure Data Studio, puede hacer clic en Explicar sobre la ventana de consulta.

También puede ejecutar un plan de consulta real:

  • En SSMS, en la Consulta menú, haga clic en Incluir plan de ejecución real o haga clic en Incluir plan de ejecución real botón de la barra de herramientas.
  • En Azure Data Studio, vaya a Ver> Paleta de comandos y escriba Ejecutar consulta actual con plan real .

Tenga en cuenta que si Incluye plan de ejecución real está seleccionado en SSMS, el SET SHOWPLAN_XML ON La opción no genera una salida XML Showplan. Intente borrar Incluir plan de ejecución real antes de usar este SET opción.

Sin embargo, encuentro que Azure Data Studio hace lo contrario SHOWPLAN_XML ON parece anular Ejecutar consulta actual con plan real opción, excepto si ejecuto Explicar primero (plan de consulta estimado), después de lo cual Ejecutar consulta actual con plan real de repente funciona (las Filas reales y ejecuciones reales columnas de las Operaciones Principales pestaña devolver los datos apropiados).

Probablemente sea mejor desactivar la opción XML Showplan antes de usar otros métodos para recuperar el plan de consulta.