Statistiche sui tempi

Migliorare le prestazioni delle query in SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

Schermata iniziale di SQL Server Management Studio

Migliorare le prestazioni delle query in SQL Server

STATISTICS TIME in 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 - il comando riporta i millisecondi necessari per analizzare, compilare ed eseguire una query.

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.
Migliorare le prestazioni delle query in SQL Server

Tempo di esecuzione di SQL Server

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU time: tempo impiegato dai processori per elaborare la query
  • Elapsed time: durata totale della query
Migliorare le prestazioni delle query in SQL Server

Esempio: query 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); 
Migliorare le prestazioni delle query in SQL Server

Esempio: query 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.
Migliorare le prestazioni delle query in SQL Server

Esempio: query 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.
Migliorare le prestazioni delle query in SQL Server

Esempio: query 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.
Migliorare le prestazioni delle query in SQL Server

Confronto tra query

  • Prima query con due sottoquery
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.
  • Seconda query con 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.
Migliorare le prestazioni delle query in SQL Server

Elapsed time vs CPU time

Elapsed time

  • Può variare nell'analisi dei tempi delle query
  • Migliore metrica per la query più veloce

CPU time

  • Dovrebbe variare poco nell'analisi dei tempi
  • Può non essere utile se i processori lavorano in parallelo
Migliorare le prestazioni delle query in SQL Server

Calcolare una media

  • Non basarti su una sola misura: fai una media.
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.
Migliorare le prestazioni delle query in SQL Server

Ayo berlatih!

Migliorare le prestazioni delle query in SQL Server

Preparing Video For Download...