¡Hola, chicos!
¿Está todo bien contigo?

En esta publicación, me gustaría presentarles una herramienta muy útil en la vida diaria de quienes trabajan con Performance Tuning y constantemente necesitan activar las opciones STATISTICS TIME y/o IO para ver información sobre estas consultas que puede ayudar con la actividad de optimización de consultas. (¿Quieres algunos consejos sobre el ajuste del rendimiento? Accede a esta publicación).

Cualquiera que ya haya utilizado estos parámetros del comando SET sabe que el formato de la salida muchas veces no es muy intuitivo, especialmente cuando hay varias consultas en la declaración, utilizando diferentes tablas, lo que dificulta un poco la comprensión de esta información.

Para ayudarnos con este estudio de Performance Tuning, Richie Rump desarrolló una aplicación Web donde se pega la salida de la pestaña Mensajes de SQL Server Management Studio (SSMS) y esta herramienta convierte la información al formato de tablas HTML, permitiendo una visualización clara, objetiva y limpia, y además, permitiéndonos ordenar la información, como por el número de lecturas lógicas, por ejemplo.

Si quieres conocer y empezar a utilizar Statistics Parser, sólo tienes que acceder al enlace http://statisticsparser.com/.

Ejemplo de uso

Demostraré un ejemplo práctico de cómo la herramienta Statistics Parser facilita el análisis de este resultado.

Salida estándar de STATISTICS TIME y STATISTICS IO

SQL Server parse and compile time: 
   CPU time = 31 ms, elapsed time = 103 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

(10000 rows affected)
Table 'Tabela'. Scan count 1, logical reads 556, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Sites_RSS'. Scan count 1, logical reads 33, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Historico_Deadlocks'. Scan count 1, logical reads 27, physical reads 2, read-ahead reads 0, lob logical reads 7923, lob physical reads 0, lob read-ahead reads 7279.
Table 'Feriado_ES'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Feriado'. Scan count 1, logical reads 1, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Fato_Venda'. Scan count 1, logical reads 1, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Dim_Forma_Pagamento'. Scan count 1, logical reads 1, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Enderecos'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Dim_Produto'. Scan count 1, logical reads 1, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Dia_Util'. Scan count 1, logical reads 2, physical reads 2, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Dim_Cliente'. Scan count 1, logical reads 1, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Conteudo_RSS'. Scan count 1, logical reads 1, physical reads 0, read-ahead reads 22, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Clientes'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 203 ms,  elapsed time = 3486 ms.

Salida utilizando la herramienta Analizador de estadísticas

Otras alternativas

Si buscas otras alternativas más completas a Statistics Parser, te recomiendo Explorador de planes SQLSentry, una excelente herramienta que personalmente me gusta mucho y uso siempre que necesito optimizar una consulta (pronto haré un post sobre ello)

Ejemplo de uso

¡Eso es todo, amigos!
Espero que os haya gustado este post, un abrazo y ¡hasta la próxima!