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

Como SHOWPLAN_XML funciona no SQL Server


No SQL Server, você pode usar o SET SHOWPLAN_XML instrução para retornar informações detalhadas sobre como uma instrução T-SQL será executada, na forma de um documento XML bem definido.

É semelhante a SHOWPLAN_ALL , exceto que SHOWPLAN_ALL retorna seu conjunto de dados de linhas que formam uma árvore hierárquica.

Você pode definir SHOWPLAN_XML para ON ou OFF .

Quando SHOWPLAN_XML 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_XML ON;
GO

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

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

O resultado obtido pode depender de qual ferramenta você está usando para acessar o SQL Server.

Quando executo isso no Azure Data Studio, posso clicar nas várias guias para obter uma visão diferente do resultado.

Os Resultados guia exibe a string XML bruta:

Clicar na linha abre o documento XML em uma nova guia:

O Plano de consulta guia exibe uma representação gráfica do resultado:

As Principais Operações tab apresenta os dados em formato tabular que permite classificar os dados por várias métricas:

Não está funcionando?


Se não funcionar para você, certifique-se de Incluir Plano de Execução Real não está selecionado no SSMS. Quando selecionado, SET SHOWPLAN_XML ON não produz saída XML Showplan.

Como desativá-lo


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

Depois de fazer isso, as instruções subsequentes serão executadas normalmente.
SET SHOWPLAN_XML 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.

Plano de execução em GUIs


Se você estiver usando uma ferramenta gráfica, como SSMS ou Azure Data Studio, poderá ter uma opção de atalho para visualizar o plano de execução de consulta gráfica estimado. Isso permite que você visualize o plano de consulta sem precisar executar SET SHOWPLAN_XML ON .

Para executar um plano de consulta estimado:
  • 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 . Isso evitará que você tenha que ativar SHOWPLAN_XML liga e desliga no seu código.
  • No Azure Data Studio, você pode clicar no botão Explicar botão acima da janela de consulta.

Você também pode executar um plano de consulta real:
  • No SSMS, na Consulta menu, clique em Incluir plano de execução real ou clique em Incluir Plano de Execução Real botão da barra de ferramentas.
  • No Azure Data Studio, vá para Exibir> Paleta de Comandos e digite Executar consulta atual com plano real .

Observe que, se incluir plano de execução real estiver selecionado no SSMS, o SET SHOWPLAN_XML ON opção não produz saída XML Showplan. Tente limpar o Incluir plano de execução real botão antes de usar este SET opção.

No entanto, acho que o Azure Data Studio faz o oposto SHOWPLAN_XML ON parece substituir o Executar consulta atual com plano real opção, exceto se eu executar Explicar primeiro (plano de consulta estimado), após o qual Executar consulta atual com plano real de repente funciona (as linhas reais e Execuções Reais colunas das Principais operações guia retornar os dados apropriados).

Provavelmente, é melhor desativar a opção XML Showplan antes de usar outros métodos para recuperar o plano de consulta.