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

SQL Server SHOWPLAN_TEXT

In SQL Server puoi utilizzare SET SHOWPLAN_TEXT per restituire informazioni dettagliate su come viene eseguita un'istruzione T-SQL.

SHOWPLAN_TEXT restituisce le informazioni come un insieme di righe che formano un albero gerarchico che rappresenta i passaggi eseguiti da Query Processor di SQL Server durante l'esecuzione di ogni istruzione.

È simile a SHOWPLAN_ALL , tranne per il fatto che restituisce meno dettagli. È quindi rivolto ad applicazioni che non possono gestire i dettagli extra che SHOWPLAN_ALL fornisce.

Puoi impostare SHOWPLAN_TEXT su ON o OFF .

Quando SHOWPLAN_TEXT è ON , tutte le successive istruzioni T-SQL non vengono eseguite. Invece SQL Server restituisce le informazioni sull'esecuzione per l'istruzione (senza eseguirla).

Esempio

Ecco un esempio da dimostrare.

SET SHOWPLAN_TEXT ON;
GO

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

Nota che SET SHOWPLAN_TEXT non può essere specificato all'interno di una stored procedure e deve essere l'unica istruzione in un batch.

Ecco come appare il risultato in Azure Data Studio:

Ed ecco come appare in mssql-cli (interfaccia della riga di comando):

Commands completed successfully.
+------------+
| StmtText   |
|------------|
| 
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;            |
+------------+
(1 row affected)
+--------------------------------------------------------------------------------------------------------------------------------------+
| StmtText                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------|
|   |--Hash Match(Inner Join, HASH:([d].[DogName])=([Expr1003]), RESIDUAL:([Expr1003]=[Test].[dbo].[Dogs].[DogName] as [d].[DogName])) |
|        |--Table Scan(OBJECT:([Test].[dbo].[Dogs] AS [d]))                                                                            |
|        |--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(nvarchar(255),[Test].[dbo].[Cats].[CatName] as [c].[CatName],0)))       |
|             |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F] AS [c]))                                |
+--------------------------------------------------------------------------------------------------------------------------------------+
(4 rows affected)
Commands completed successfully.

Come spegnerlo

Puoi disattivarlo utilizzando SET SHOWPLAN_TEXT OFF .

Dopo aver eseguito questa operazione, le istruzioni successive verranno eseguite normalmente.

SET SHOWPLAN_TEXT OFF;
GO

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

Risultato:

Commands completed successfully.
+---------+-----------+---------+-----------+-----------+
| CatId   | CatName   | DogId   | DogName   | GoodDog   |
|---------+-----------+---------+-----------+-----------|
| 2       | Fluffy    | 2       | Fluffy    | 0         |
+---------+-----------+---------+-----------+-----------+
(1 row affected)
Commands completed successfully.

Deprecato o no?

Secondo questo vecchio articolo MSDN, SET SHOWPLAN_TEXT è programmato per il ritiro nelle versioni future di showplan e si consiglia di utilizzare SET SHOWPLAN_XML invece.

Tuttavia, quell'articolo di MSDN è per SQL Server 2008 R2 e, mentre lo scrivo, non sembra essere stato deprecato in SQL Server 2019. In effetti, la documentazione attuale non fa menzione della deprecazione e non è inclusa quando eseguo un elenco di elementi obsoleti in SQL Server.

Ad ogni modo, probabilmente conviene tenerlo a mente prima di usarlo nelle versioni future.

Piano di esecuzione grafica

Se usi uno strumento grafico come SSMS o Azure Data Studio, potresti avere la possibilità di visualizzare il piano di esecuzione della query grafica stimato per la query corrente.

  • In SSMS puoi usare Ctrl + L per farlo. Oppure puoi fare clic su Mostra piano di esecuzione stimato oppure fai clic con il pulsante destro del mouse nella finestra della query e seleziona Visualizza piano di esecuzione stimato .
  • In Azure Data Studio, puoi fare clic su Spiega pulsante sopra la finestra della query.

Puoi anche usare SET SHOWPLAN_XML ON per abilitarlo e SET SHOWPLAN_XML OFF per disabilitarlo.