Statistiques de temps

Améliorer la performance des requêtes dans SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

Écran d'accueil de SQL Server Management Studio

Améliorer la performance des requêtes dans SQL Server

STATISTICS TIME dans 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 – cette commande indique en millisecondes le temps requis pour analyser, compiler et exécuter une requête.

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.
Améliorer la performance des requêtes dans SQL Server

SQL Server Execution Times

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU time : temps utilisé par les processeurs du serveur pour traiter la requête
  • Elapsed time : durée totale d'exécution de la requête
Améliorer la performance des requêtes dans SQL Server

Exemple : requête 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); 
Améliorer la performance des requêtes dans SQL Server

Exemple : requête 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.
Améliorer la performance des requêtes dans SQL Server

Exemple : requête 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.
Améliorer la performance des requêtes dans SQL Server

Exemple : requête 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.
Améliorer la performance des requêtes dans SQL Server

Comparer les requêtes

  • Première requête contenant deux sous-requêtes
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.
  • Deuxième requête avec 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.
Améliorer la performance des requêtes dans SQL Server

Elapsed time vs CPU time

Elapsed time

  • Peut varier lors de l'analyse des statistiques de temps
  • Meilleure mesure pour repérer la requête la plus rapide

CPU time

  • Devrait peu varier lors de l'analyse des statistiques de temps
  • Peut être peu utile si les processeurs du serveur fonctionnent en parallèle
Améliorer la performance des requêtes dans SQL Server

Calculer une moyenne

  • Ne vous fiez pas à une seule mesure : calculez une moyenne.
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.
Améliorer la performance des requêtes dans SQL Server

Passons à la pratique !

Améliorer la performance des requêtes dans SQL Server

Preparing Video For Download...