sql >> Database >  >> RDS >> Sqlserver

Wat is STATISTIEKENPROFIEL in SQL Server?

In SQL Server kunt u het SET STATISTICS PROFILE . gebruiken statement om de profielinformatie voor een T-SQL-statement weer te geven.

STATISTICS PROFILE werkt voor ad-hocvragen, weergaven en opgeslagen procedures.

Wanneer STATISTICS PROFILE is ingesteld op ON , retourneert elke uitgevoerde query zijn reguliere resultatenset, gevolgd door een extra resultatenset die een profiel van de uitvoering van de query laat zien.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

SET STATISTICS PROFILE ON;
GO

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

Resultaat:

Dit geeft dezelfde kolommen terug als SHOWPLAN_ALL retourneert plus twee extra (de Rijen en Voert uit kolommen).

Die schermafbeelding is gemaakt toen ik die instructie uitvoerde in Azure Data Studio.

Hier is nog een eenvoudig voorbeeld, deze keer voer ik een instructie uit in mssql-cli (opdrachtregelinterface).

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats;
GO

Resultaat (met verticale uitvoer):

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.

Hoe het uit te schakelen

Om STATISTICS PROFILE te veranderen uit, voer het gewoon opnieuw uit met OFF in plaats van ON :

SET STATISTICS PROFILE OFF;
GO

Is STATISTICS PROFILE Beëindigd?

Hoewel de huidige documentatie er geen melding van maakt, SET STATISTICS PROFILE lijkt te zijn gepland voor beëindiging in toekomstige showplan-versies.

Volgens dit oude MSDN-artikel, SET STATISTICS PROFILE is gepland voor afschaffing in toekomstige showplan-versies, en het wordt aanbevolen dat u SET STATISTICS XML gebruikt in plaats daarvan.

Ook de huidige documentatie voor SET STATISTICS XML ondersteunt dit:

SET STATISTICS PROFILE en SET STATISTICS XML zijn tegenhangers van elkaar. De eerste produceert tekstuele uitvoer; de laatste produceert XML-uitvoer. In toekomstige versies van SQL Server wordt nieuwe informatie over het uitvoeringsplan voor query's alleen weergegeven via de SET STATISTICS XML-instructie, niet via de SET STATISTICS PROFILE-instructie.

Daarom loont het waarschijnlijk om SET STATISTICS XML te gebruiken in plaats van SET STATISTICS PROFILE waar mogelijk.


  1. Inleiding tot door de gebruiker gedefinieerde functies in SQL Server

  2. Apache Spark:JDBC-verbinding werkt niet

  3. Hoe ROUND() werkt in MariaDB

  4. Hoe een kolom wijzigen en de standaardwaarde wijzigen?