Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво е СТАТИСТИЧЕСКО ВРЕМЕ в SQL Server?

В SQL Server можете да използвате SET STATISTICS TIME оператор за показване на времето, необходимо за изпълнение на T-SQL оператор.

По-конкретно, той връща броя милисекунди, необходими за анализиране, компилиране и изпълнение на всеки израз.

Когато SET STATISTICS TIME е ON , се показва статистиката за времето за изявление. Когато OFF , статистиката за времето не се показва.

Настройката на SET STATISTICS TIME се задава по време на изпълнение или изпълнение, а не по време на синтактичен анализ.

Пример

Ето един прост пример за демонстрация.

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

Резултат:

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.

Използвате GUI?

Ако изпълнявате заявката си в GUI, като SSMS или Azure Data Studio, може да се наложи да щракнете върху Съобщения раздел или подобно, за да видите статистиката за времето.

Ето какво се случва, когато изпълня предишната заявка в Azure Data Studio.

Получавам резултатите, но не и STATISTICS TIME информация. За да видя тази информация, трябва да щракна върху Съобщения . След като го направя, мога да видя съответната информация.

Последващи заявки

След като е зададен на ON , всички следващи заявки ще върнат STATISTICS TIME информация, докато не бъде зададена на OFF .

Ето още една ad hoc заявка, която изпълних в интерфейса на командния ред веднага след първата.

SELECT COUNT(*) FROM Application.People;

Резултат:

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

Вече бях задал STATISTICS TIME до ON преди, следователно няма нужда да го правите отново.

Изключете го

За да го изключите, просто го задайте на OFF .

SET STATISTICS TIME OFF;

Сега, когато изпълнявам T-SQL оператори, вече не получавам статистическите данни за времето под заявката.

SELECT COUNT(*) FROM Application.People;

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Динамично маскиране на данни в SQL Server за начинаещи

  2. Присъединяване на таблица въз основа на стойности, разделени със запетая

  3. Ограничение за размера на индекса от 900 байта в дължината на знаците

  4. Оценяване на настройката за мониторинг на производителността на вашата база данни

  5. EXISTS срещу JOIN и използване на клауза EXISTS