Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cos'è l'ORA STATISTICHE in SQL Server?

In SQL Server puoi utilizzare SET STATISTICS TIME per visualizzare il tempo necessario per eseguire un'istruzione T-SQL.

Più specificamente, restituisce il numero di millisecondi necessari per analizzare, compilare ed eseguire ciascuna istruzione.

Quando SET STATISTICS TIME è ON , vengono visualizzate le statistiche temporali per un estratto conto. Quando OFF , le statistiche temporali non vengono visualizzate.

L'impostazione di SET STATISTICS TIME è impostato al momento dell'esecuzione o dell'esecuzione e non al momento dell'analisi.

Esempio

Ecco un semplice esempio da dimostrare.

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

Risultato:

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.

Usi una GUI?

Se stai eseguendo la query in una GUI come SSMS o Azure Data Studio, potrebbe essere necessario fare clic su Messaggi scheda o simili per visualizzare le statistiche temporali.

Ecco cosa succede quando eseguo la query precedente in Azure Data Studio.

Ottengo i risultati, ma nessun STATISTICS TIME informazione. Per visualizzare tali informazioni, devo fare clic su Messaggi . Una volta fatto, posso vedere le informazioni pertinenti.

Query successive

Una volta impostato su ON , qualsiasi query successiva restituirà il STATISTICS TIME informazioni, finché non viene impostato su OFF .

Ecco un'altra query ad hoc che ho eseguito nella mia interfaccia a riga di comando subito dopo la prima.

SELECT COUNT(*) FROM Application.People;

Risultato:

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

Avevo già impostato STATISTICS TIME su ON in precedenza, quindi non c'è bisogno di farlo di nuovo.

Spegnilo

Per disattivarlo, impostalo semplicemente su OFF .

SET STATISTICS TIME OFF;

Ora, quando eseguo istruzioni T-SQL, non ottengo più le statistiche temporali sotto la query.

SELECT COUNT(*) FROM Application.People;

Risultato:

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