No SQL Server, você pode usar o
SET SHOWPLAN_ALL
instrução para retornar informações detalhadas sobre como uma instrução T-SQL é executada, bem como estimativas dos requisitos de recursos para as instruções. SHOWPLAN_ALL
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_TEXT
, exceto que SHOWPLAN_ALL
retorna informações mais detalhadas (e deve ser usado com aplicativos que podem manipular sua saída). Você pode definir
SHOWPLAN_ALL
para ON
ou OFF
. Quando
SHOWPLAN_ALL
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). É importante observar que
SHOWPLAN_ALL
fornece estimativas dos requisitos de recursos e que os requisitos de recursos reais podem diferir quando a instrução é de fato executada. Exemplo
Aqui está um exemplo para demonstrar.
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM Cats;
GO
Observe que
SET SHOWPLAN_ALL
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) ao usar a saída vertical:
Commands completed successfully. -[ RECORD 1 ]------------------------- StmtText | SELECT * FROM Cats; StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | 1 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 ]------------------------- 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.
Há muitas colunas, então usei a saída vertical aqui para facilitar a leitura.
Se minha consulta fosse mais complexa, mais linhas seriam retornadas.
Aqui está um exemplo de uma consulta (um pouco) mais complexa.
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Resultado:
Como desativá-lo
Você pode desativá-lo usando
SET SHOWPLAN_ALL OFF
. Depois de fazer isso, as instruções subsequentes serão executadas normalmente.
SET SHOWPLAN_ALL OFF;
GO
SELECT * FROM Cats;
GO
Resultado:
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) Commands completed successfully.
Descontinuado ou não?
De acordo com este antigo artigo do MSDN,
SET SHOWPLAN_ALL
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.