Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server SHOWPLAN_TEXT


No SQL Server, você pode usar o SET SHOWPLAN_TEXT instrução para retornar informações detalhadas sobre como uma instrução T-SQL é executada.

SHOWPLAN_TEXT retorna informações como um conjunto de linhas que formam uma árvore hierárquica que representa as etapas executadas pelo processador de consulta do SQL Server à medida que ele executa cada instrução.

É semelhante a SHOWPLAN_ALL , exceto que ele retorna menos detalhes. Portanto, é voltado para aplicativos que não podem lidar com os detalhes extras que SHOWPLAN_ALL fornece.

Você pode definir SHOWPLAN_TEXT para ON ou OFF .

Quando SHOWPLAN_TEXT está ON , todas as instruções T-SQL subsequentes não serão executadas. Em vez disso, o SQL Server retorna informações de execução para a instrução (sem executá-la).

Exemplo


Aqui está um exemplo para demonstrar.
SET SHOWPLAN_TEXT ON;
GO

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

Observe que SET SHOWPLAN_TEXT não pode ser especificado dentro de um procedimento armazenado e deve ser a única instrução em um lote.

Veja como é o resultado no Azure Data Studio:

E aqui está o que parece no mssql-cli (interface de linha de 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.

Como desativá-lo


Você pode desativá-lo usando SET SHOWPLAN_TEXT OFF .

Depois de fazer isso, as instruções subsequentes serão executadas normalmente.
SET SHOWPLAN_TEXT OFF;
GO

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

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

Descontinuado ou não?


De acordo com este antigo artigo do MSDN, SET SHOWPLAN_TEXT está programado para descontinuação em futuras versões do plano de exibição, e é recomendado que você use SET SHOWPLAN_XML em vez de.

No entanto, esse artigo do MSDN é para o SQL Server 2008 R2 e, enquanto escrevo isso, não parece ter sido preterido no SQL Server 2019. Na verdade, a documentação atual não menciona a depreciação e não está incluída quando executo uma lista de itens obsoletos no SQL Server.

De qualquer forma, provavelmente vale a pena ter isso em mente antes de usá-lo em versões futuras.

Plano de Execução Gráfica


Se você estiver usando uma ferramenta gráfica, como SSMS ou Azure Data Studio, poderá ter a opção de exibir o plano de execução de consulta gráfica estimado para a consulta atual.
  • No SSMS, você pode usar Ctrl + L para fazer isso. Ou você pode clicar em Exibir plano de execução estimado ícone ou clique com o botão direito do mouse na janela de consulta e selecione Exibir plano de execução estimado .
  • No Azure Data Studio, você pode clicar no botão Explicar botão acima da janela de consulta.

Você também pode usar SET SHOWPLAN_XML ON para habilitá-lo e SET SHOWPLAN_XML OFF para desativá-lo.