Como gerar o plano de execução de query no Azure Data Studio

No artigo de hoje, vamos demonstrar em como visualizar o plano de execução (execution plan) de uma query usando o Azure Data Studio (ADS).

  1. O primeiro passo é certificar que esta habilitado os recursos em beta, para isso, clique Preferências e depois Configurações

Acessando as configurações

  1. Procure por “workbench editor enable preview” e deixe habilitado caso não esteja

Verificando o Enable Preview

  1. Crie uma nova consulta

Criando uma nova consulta

  1. Monte sua query, e depois para executar, aperte Ctrl + Shift + P (para abrir a palheta de comandos) e rode o comando Executar Consulta Atual com Plano Real (Run Current Query with Actual Plan em inglês)

Acionando a opção de executar com plano

  1. Em algumas versões pode ser que aqui já funcione, no meu caso não funcionou, então eu continuei com os procedimentos abaixo
  2. Na aba resultados, vai ter o Plano de Execução XML, clique nele, ele irá abrir numa nova aba o texto XML

Pegando o XML do plano

  1. Salve esse arquivo com a extensão sqlplan

Salvando o arquivo XML

  1. Agora aperte Ctrl + Shift + P (para abrir a palheta de comandos) e execute Execution Plan: Comparar planos de execução

Acionando o comparar planos

  1. Vai abrir uma nova aba, clique então em Adicionar plano de execução

Clicando no botão adicionar plano de execução

  1. Abra o arquivo salvo no tópico 7, ai será exibido o plano de execução

Visualizando o plano de execução

 

Obs.: Para as versões mais novas do ADS, do lado do botão executar query, já existe os botões para gerar o plano de execução, o tutorial acima seria para as versões mais antigas.

 

Query de Exemplo usada no tutorial:

SELECT
    C5_NUM,
    A1_NOME,
    C6_ITEM,
    C6_PRODUTO,
    B1_DESC
FROM
    SC5990 SC5
    INNER JOIN SA1990 SA1 ON (
        A1_FILIAL = ' '
        AND A1_COD = C5_CLIENTE
        AND A1_LOJA = C5_LOJACLI
        AND SA1.D_E_L_E_T_ = ' '
    )
    INNER JOIN SC6990 SC6 ON (
        C6_FILIAL = C5_FILIAL
        AND C6_NUM = C5_NUM
        AND C6_CLI = C5_CLIENTE
        AND C6_LOJA = C5_LOJACLI
        AND SC6.D_E_L_E_T_ = ' '
    )
    INNER JOIN SB1990 SB1 ON (
        B1_FILIAL = ' '
        AND B1_COD = C6_PRODUTO
        AND SB1.D_E_L_E_T_ = ' '
    )
WHERE
    C5_FILIAL = '01'
    AND C5_TIPO NOT IN ('B', 'D')
    AND SC5.D_E_L_E_T_ = ' '
ORDER BY
    C5_NUM,
    C6_ITEM

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação