Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce que STATISTICS TIME dans SQL Server ?

Dans SQL Server, vous pouvez utiliser le SET STATISTICS TIME pour afficher le temps nécessaire à l'exécution d'une instruction T-SQL.

Plus précisément, il renvoie le nombre de millisecondes nécessaires pour analyser, compiler et exécuter chaque instruction.

Lorsque SET STATISTICS TIME est ON , les statistiques temporelles d'une instruction sont affichées. Lorsque OFF , les statistiques de temps ne sont pas affichées.

Le réglage de SET STATISTICS TIME est défini au moment de l'exécution ou de l'exécution et non au moment de l'analyse.

Exemple

Voici un exemple simple à démontrer.

SET STATISTICS TIME ON;
GO

SELECT 
    c.CityName, 
    s.StateProvinceName AS State, 
    c.LatestRecordedPopulation AS Population
FROM Application.Cities c
INNER JOIN Application.StateProvinces s
ON c.StateProvinceID = s.StateProvinceID
WHERE c.LatestRecordedPopulation > 2000000
ORDER BY c.LatestRecordedPopulation DESC;
GO

Résultat :

Commands completed successfully.
+-------------+------------+--------------+
| CityName    | State      | Population   |
|-------------+------------+--------------|
| New York    | New York   | 8175133      |
| Los Angeles | California | 3792621      |
| Chicago     | Illinois   | 2695598      |
| Brooklyn    | New York   | 2565635      |
| Queens      | New York   | 2272771      |
| Houston     | Texas      | 2099451      |
+-------------+------------+--------------+
SQL Server parse and compile time: 
   CPU time = 4 ms, elapsed time = 6 ms.
Commands completed successfully.

Vous utilisez une interface graphique ?

Si vous exécutez votre requête dans une interface graphique telle que SSMS ou Azure Data Studio, vous devrez peut-être cliquer sur Messages onglet ou similaire afin d'afficher les statistiques de temps.

Voici ce qui se passe lorsque j'exécute la requête précédente dans Azure Data Studio.

J'obtiens les résultats, mais pas de STATISTICS TIME information. Pour afficher ces informations, je dois cliquer sur Messages . Une fois que j'ai fait cela, je peux voir les informations pertinentes.

Requêtes ultérieures

Une fois réglé sur ON , toutes les requêtes suivantes renverront le STATISTICS TIME informations, jusqu'à ce qu'il soit réglé sur OFF .

Voici une autre requête ad hoc que j'ai exécutée dans mon interface de ligne de commande juste après la première.

SELECT COUNT(*) FROM Application.People;

Résultat :

+--------------------+
| (No column name)   |
|--------------------|
| 1111               |
+--------------------+
SQL Server parse and compile time: 
   CPU time = 6 ms, elapsed time = 6 ms.

J'avais déjà défini STATISTICS TIME sur ON précédemment, donc pas besoin de le refaire.

Désactivez-le

Pour le désactiver, réglez-le simplement sur OFF .

SET STATISTICS TIME OFF;

Désormais, lorsque j'exécute des instructions T-SQL, je n'obtiens plus les statistiques de temps sous la requête.

SELECT COUNT(*) FROM Application.People;

Résultat :

+--------------------+
| (No column name)   |
|--------------------|
| 1111               |
+--------------------+
(1 row affected)