Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to jest PROFIL STATYSTYKI w SQL Server?

W SQL Server możesz użyć SET STATISTICS PROFILE instrukcja, aby wyświetlić informacje o profilu dla instrukcji T-SQL.

STATISTICS PROFILE działa dla zapytań ad hoc, widoków i procedur składowanych.

Gdy STATISTICS PROFILE jest ustawiony na ON , każde wykonane zapytanie zwraca swój zwykły zestaw wyników, po którym następuje dodatkowy zestaw wyników, który pokazuje profil wykonania zapytania.

Przykład

Oto prosty przykład do zademonstrowania.

SET STATISTICS PROFILE ON;
GO

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

Wynik:

Zwraca te same kolumny, które SHOWPLAN_ALL zwraca plus dwa dodatkowe (Wiersze i Wykonaj kolumny).

Ten zrzut ekranu został zrobiony, gdy uruchomiłem tę instrukcję w Azure Data Studio.

Oto kolejny prosty przykład, tym razem uruchamiam instrukcję w mssql-cli (interfejs wiersza poleceń).

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats;
GO

Wynik (przy użyciu wyjścia pionowego):

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.

Jak to wyłączyć

Aby zmienić STATISTICS PROFILE wyłączone, po prostu uruchom go ponownie, używając OFF zamiast ON :

SET STATISTICS PROFILE OFF;
GO

Czy STATISTICS PROFILE Wycofane?

Chociaż aktualna dokumentacja nie wspomina o tym, SET STATISTICS PROFILE wydaje się być zaplanowane do wycofania w przyszłych wersjach showplanu.

Zgodnie z tym starym artykułem MSDN, SET STATISTICS PROFILE jest zaplanowane do wycofania w przyszłych wersjach showplanu i zaleca się użycie SET STATISTICS XML zamiast tego.

Również aktualna dokumentacja dla SET STATISTICS XML obsługuje to:

SET STATISTICS PROFILE i SET STATISTICS XML są swoimi odpowiednikami. Pierwsza z nich produkuje tekst; ten ostatni generuje dane wyjściowe XML. W przyszłych wersjach SQL Server nowe informacje o planie wykonania zapytania będą wyświetlane tylko za pomocą instrukcji SET STATISTICS XML, a nie instrukcji SET STATISTICS PROFILE.

Dlatego prawdopodobnie opłaca się użyć SET STATISTICS XML zamiast SET STATISTICS PROFILE tam gdzie to możliwe.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj float na varchar w SQL Server bez notacji naukowej

  2. WYBIERZ WYRÓŻNIENIE w jednej kolumnie

  3. DEGREES() Przykłady w SQL Server

  4. Jak ORIGINAL_DB_NAME() działa w SQL Server

  5. Jak usunąć plik danych z bazy danych programu SQL Server (T-SQL)