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

Какво е STATISTICS PROFILE в SQL Server?

В SQL Server можете да използвате SET STATISTICS PROFILE оператор за показване на информацията за профила за T-SQL оператор.

STATISTICS PROFILE работи за ad hoc заявки, изгледи и съхранени процедури.

Когато STATISTICS PROFILE е настроен на ON , всяка изпълнена заявка връща своя редовен набор от резултати, последван от допълнителен набор от резултати, който показва профил на изпълнението на заявката.

Пример

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

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Резултат:

Това връща същите колони, които SHOWPLAN_ALL връща плюс две допълнителни (Редове и Изпълнява колони).

Тази екранна снимка беше направена, когато стартирах това изявление в Azure Data Studio.

Ето още един прост пример, този път изпълнявам изявление в mssql-cli (интерфейс на командния ред).

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats;
GO

Резултат (с помощта на вертикален изход):

Commands completed successfully.
+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | Meow      |
| 2       | Fluffy    |
| 3       | Scratch   |
+---------+-----------+
(3 rows affected)
-[ RECORD 1 ]-------------------------
Rows               | 3
Executes           | 1
StmtText           | SELECT * FROM Cats
StmtId             | 1
NodeId             | 1
Parent             | 0
PhysicalOp         | NULL
LogicalOp          | NULL
Argument           | NULL
DefinedValues      | NULL
EstimateRows       | 3
EstimateIO         | NULL
EstimateCPU        | NULL
AvgRowSize         | NULL
TotalSubtreeCost   | 0.0032853
OutputList         | NULL
Warnings           | NULL
Type               | SELECT
Parallel           | 0
EstimateExecutions | NULL
-[ RECORD 2 ]-------------------------
Rows               | 3
Executes           | 1
StmtText           |   |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]))
StmtId             | 1
NodeId             | 2
Parent             | 1
PhysicalOp         | Clustered Index Scan
LogicalOp          | Clustered Index Scan
Argument           | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])
DefinedValues      | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName]
EstimateRows       | 3
EstimateIO         | 0.003125
EstimateCPU        | 0.0001603
AvgRowSize         | 142
TotalSubtreeCost   | 0.0032853
OutputList         | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName]
Warnings           | NULL
Type               | PLAN_ROW
Parallel           | 0
EstimateExecutions | 1
(2 rows affected)
Commands completed successfully.

Как да го изключим

За да включите STATISTICS PROFILE изключен, просто го стартирайте отново, като използвате OFF вместо ON :

SET STATISTICS PROFILE OFF;
GO

Е STATISTICS PROFILE Оттеглено?

Въпреки че текущата документация не го споменава, SET STATISTICS PROFILE изглежда е насрочено за оттегляне в бъдещи версии на showplan.

Според тази стара статия в MSDN, SET STATISTICS PROFILE е насрочено за оттегляне в бъдещи версии на showplan и се препоръчва да използвате SET STATISTICS XML вместо това.

Също така, текущата документация за SET STATISTICS XML поддържа това:

SET STATISTICS PROFILE и SET STATISTICS XML са двойници един на друг. Първият произвежда текстови резултати; последният произвежда XML изход. В бъдещи версии на SQL Server информацията за новия план за изпълнение на заявка ще се показва само чрез оператора SET STATISTICS XML, а не чрез оператора SET STATISTICS PROFILE.

Следователно вероятно си струва да използвате SET STATISTICS XML вместо SET STATISTICS PROFILE където е възможно.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Примери за преобразуване на „дата“ в „datetime2“ в SQL Server (T-SQL)

  2. ISJSON() Примери в SQL Server (T-SQL)

  3. SQL Server, еквивалент на GROUP_CONCAT()

  4. Какво е блокиране на SQL Server?

  5. SQL Server Регулярни изрази в T-SQL