Tidsstatistik

Förbättra frågeprestanda i SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

Välkomstskärm för SQL Server Management Studio

Förbättra frågeprestanda i SQL Server

STATISTICS TIME i 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 – kommandot rapporterar antal millisekunder som krävs för att tolka, kompilera och köra en fråga.

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.
Förbättra frågeprestanda i SQL Server

SQL Server Execution Times

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU-tid: tid som serverns processorer använder för att bearbeta frågan
  • Förfluten tid: frågans totala körningstid
Förbättra frågeprestanda i SQL Server

Exempel: fråga 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); 
Förbättra frågeprestanda i SQL Server

Exempel: fråga 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.
Förbättra frågeprestanda i SQL Server

Exempel: fråga 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.
Förbättra frågeprestanda i SQL Server

Exempel: fråga 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.
Förbättra frågeprestanda i SQL Server

Jämföra frågor

  • Första frågan med två underfrågor
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.
  • Andra frågan med 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.
Förbättra frågeprestanda i SQL Server

Förfluten tid vs. CPU-tid

Förfluten tid

  • Kan variera vid analys av frågornas tidsstatistik
  • Det bästa måttet för att identifiera den snabbaste frågan

CPU-tid

  • Bör variera lite vid analys av frågornas tidsstatistik
  • Kan vara ett missvisande mått om serverns processorer körs parallellt
Förbättra frågeprestanda i SQL Server

Ta ett genomsnitt

  • Förlita dig inte på ett enda mätvärde – ta ett genomsnitt.
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.
Förbättra frågeprestanda i SQL Server

Nu kör vi en övning!

Förbättra frågeprestanda i SQL Server

Preparing Video For Download...