SET STATISTICS XML (Transact-SQL)
Hace que Microsoft SQL Server ejecute instrucciones Transact-SQL y genere información detallada sobre cómo se ejecutaron las instrucciones en un documento XML definido correctamente.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET STATISTICS XML { ON | OFF }
Comentarios
El valor de SET STATISTICS XML se establece en tiempo de ejecución, no en tiempo de análisis.
Si SET STATISTICS XML es ON, SQL Server devuelve información sobre la ejecución de cada instrucción después de ejecutarla. Cuando esta opción está establecida en ON, se devuelve información acerca de todas las instrucciones Transact-SQL siguientes hasta que se vuelve a establecer en OFF. Tenga en cuenta que SET STATISTICS XML no tiene que ser la única instrucción de un lote.
SET STATISTICS XML devuelve los resultados como nvarchar(max) para las aplicaciones que disponen de herramientas que utilizan la salida XML para mostrar y procesar la información del plan de consulta, como la utilidad sqlcmd.
SET STATISTICS XML devuelve la información como un conjunto de documentos XML. Cada instrucción posterior a la instrucción SET STATISTICS XML ON se refleja en la salida con un solo documento. Cada documento contiene el texto de la instrucción, seguido de los detalles de los pasos de ejecución. La salida muestra información en tiempo de ejecución, como los costos, los índices a los que se ha tenido acceso, los tipos de operaciones realizadas, el orden de combinación, el número de veces que se realiza una operación física, el número de filas generadas por cada operador físico, etc.
El documento que contiene el esquema XML de la salida XML de SET STATISTICS XML se copia durante la instalación en un directorio local del equipo en el que se instala Microsoft SQL Server. Se encuentra en la unidad que contiene los archivos de instalación de SQL Server, en:
\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
El esquema del plan de presentación se puede encontrar también en este sitio web.
SET STATISTICS PROFILE y SET STATISTICS XML son equivalentes. El primero genera resultados en formato de texto y el último en formato XML. En futuras versiones de SQL Server, la información del plan de ejecución de consultas se mostrará únicamente mediante la instrucción SET STATISTICS XML, no SET STATISTICS PROFILE.
[!NOTA]
Si se selecciona Incluir plan de ejecución real en SQL Server Management Studio, esta opción SET no genera la salida del plan de presentación XML. Desactive la opción Incluir plan de ejecución real antes de utilizar la opción SET.
Permisos
Para utilizar SET STATISTICS XML y ver el resultado, los usuarios deben tener los permisos siguientes:
Los permisos adecuados para ejecutar instrucciones Transact-SQL.
El permiso SHOWPLAN para todas las bases de datos que contienen objetos a los que hacen referencia las instrucciones Transact-SQL.
Para las instrucciones Transact-SQL que no generan conjuntos de resultados de STATISTICS XML, solo se necesitan los permisos adecuados para ejecutar las instrucciones Transact-SQL. Para las instrucciones Transact-SQL que generan conjuntos de resultados de STATISTICS XML, el permiso de ejecución de la instrucción Transact-SQL y el permiso SHOWPLAN deben ser correctos, o la ejecución de la instrucción Transact-SQL se anulará y no se generará información relativa al plan de presentación.
Ejemplos
Las dos instrucciones siguientes utilizan la opción SET STATISTICS XML para mostrar la forma en que SQL Server analiza y optimiza el uso de índices en las consultas. La primera consulta utiliza el operador de comparación Es igual a (=) en la cláusula WHERE de una columna indizada. La segunda consulta utiliza el operador LIKE en la cláusula WHERE. De este modo, SQL Server debe utilizar un recorrido de índice clúster para encontrar los datos que satisfacen la condición de la cláusula WHERE. Los valores de los atributos EstimateRows y EstimatedTotalSubtreeCost son inferiores en la primera consulta indizada, lo que indica que se procesa mucho más rápidamente y que utiliza menos recursos que la no indizada.
USE AdventureWorks2012;
GO
SET STATISTICS XML ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Production%';
GO
SET STATISTICS XML OFF;
GO