Estatísticas de tempo

Melhorando o Desempenho de Consultas no SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

Tela de abertura do SQL Server Management Studio

Melhorando o Desempenho de Consultas no SQL Server

STATISTICS TIME no SSMS

SELECT UNStatisticalRegion, 
        CountryName,
        Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                    FROM Cities 
                    WHERE Pop2017 > 1000000);

STATISTICS TIME - o comando informa, em milissegundos, o tempo para analisar, compilar e executar uma consulta.

SQL Server parse and compile time: 
   CPU time = 16 ms, elapsed time = 21 ms.

(88 rows affected)

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
Melhorando o Desempenho de Consultas no SQL Server

SQL Server Execution Times

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU time: tempo gasto pelos processadores do servidor para processar a consulta
  • Elapsed time: duração total da consulta
Melhorando o Desempenho de Consultas no SQL Server

Exemplo: consulta 1

SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
Melhorando o Desempenho de Consultas no SQL Server

Exemplo: consulta 1

SET STATISTICS TIME ON
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
Melhorando o Desempenho de Consultas no SQL Server

Exemplo: consulta 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Melhorando o Desempenho de Consultas no SQL Server

Exemplo: consulta 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SET STATISTICS TIME OFF
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Melhorando o Desempenho de Consultas no SQL Server

Comparando consultas

  • Primeira consulta com duas subconsultas
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                 FROM Cities 
                 WHERE Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
  • Segunda consulta usando EXISTS
SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Melhorando o Desempenho de Consultas no SQL Server

Elapsed time vs. CPU time

Elapsed time

  • Pode variar ao analisar estatísticas de tempo de consulta
  • Melhor medida para identificar a consulta mais rápida

CPU time

  • Deve variar pouco ao analisar estatísticas de tempo
  • Pode não ser útil se os processadores do servidor executarem em paralelo
Melhorando o Desempenho de Consultas no SQL Server

Calculando a média

  • Não dependa de uma única medição; calcule a média.
elapsed time = 2032 ms.

elapsed time = 2060 ms.

elapsed time = 1915 ms.

elapsed time = 4009 ms.

elapsed time = 3511 ms.

Average elapsed time = 2705 ms.
Melhorando o Desempenho de Consultas no SQL Server

Vamos praticar!

Melhorando o Desempenho de Consultas no SQL Server

Preparing Video For Download...