Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist STATISTICS TIME in SQL Server?

In SQL Server können Sie die SET STATISTICS TIME verwenden -Anweisung, um die Zeit anzuzeigen, die zum Ausführen einer T-SQL-Anweisung benötigt wird.

Genauer gesagt gibt es die Anzahl der Millisekunden zurück, die zum Analysieren, Kompilieren und Ausführen jeder Anweisung erforderlich sind.

Wenn SET STATISTICS TIME ist ON , wird die Zeitstatistik für einen Auszug angezeigt. Wenn OFF , die Zeitstatistik wird nicht angezeigt.

Die Einstellung von SET STATISTICS TIME wird zur Ausführungs- oder Laufzeit und nicht zur Analysezeit gesetzt.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung.

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

Ergebnis:

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.

Eine GUI verwenden?

Wenn Sie Ihre Abfrage in einer GUI wie SSMS oder Azure Data Studio ausführen, müssen Sie möglicherweise auf Nachrichten klicken Registerkarte oder ähnliches, um die Zeitstatistik anzuzeigen.

Folgendes passiert, wenn ich die vorherige Abfrage in Azure Data Studio ausführe.

Ich erhalte die Ergebnisse, aber keine STATISTICS TIME Information. Um diese Informationen anzuzeigen, muss ich auf Nachrichten klicken . Sobald ich das getan habe, kann ich die relevanten Informationen sehen.

Nachträgliche Abfragen

Einmal auf ON gesetzt , geben alle nachfolgenden Abfragen die STATISTICS TIME zurück Informationen, bis es auf OFF eingestellt ist .

Hier ist eine weitere Ad-hoc-Abfrage, die ich direkt nach der ersten in meiner Befehlszeilenschnittstelle ausgeführt habe.

SELECT COUNT(*) FROM Application.People;

Ergebnis:

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

Ich hatte bereits STATISTICS TIME eingestellt auf ON zuvor, daher ist es nicht erforderlich, dies erneut zu tun.

Ausschalten

Um es auszuschalten, stellen Sie es einfach auf OFF .

SET STATISTICS TIME OFF;

Wenn ich jetzt T-SQL-Anweisungen ausführe, erhalte ich keine Zeitstatistiken mehr unter der Abfrage.

SELECT COUNT(*) FROM Application.People;

Ergebnis:

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