

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Plano de consulta no Amazon Redshift
<a name="query-plan"></a>

Um *plano de consulta* é uma lista de instruções que o mecanismo de execução deve seguir para executar uma consulta nos dados. Você pode criar um plano de consulta executando o comando [EXPLAIN](https://docs.aws.amazon.com/redshift/latest/dg/r_EXPLAIN.html) seguido pelo texto real da consulta, conforme mostra o exemplo de consulta a seguir:

```
EXPLAIN
select s.s_name, sum(li.l_quantity) as quantity
from tpch.lineitem li
join tpch.orders o
    on o.o_orderkey = li.l_orderkey
    and o.o_orderdate > '1992-05-01'
join tpch.supplier s
    on s.s_suppkey = li.l_suppkey
group by s.s_name
order by quantity desc
limit 10;
```

Se você executar o comando `EXPLAIN` para o exemplo de consulta acima, obterá a seguinte saída:

```
XN Limit (cost=1004400430902.15..1004400430902.17 rows=10 width=39)
  -> XN Merge (cost=1004400430902.15..1004400430926.97 rows=9928 width=39)
        Merge Key: sum(li.l_quantity)
        -> XN Network (cost=1004400430902.15..1004400430926.97 rows=9928 width=39)
              Send to leader
                  -> XN Sort (cost=1004400430902.15..1004400430926.97 rows=9928 width=39)
                     Sort Key: sum(li.l_quantity)
                      -> XN HashAggregate (cost=4400430218.24..4400430243.06 rows=9928 width=39)
                           -> XN Hash Join DS_BCAST_INNER (cost=21489.58..4400401726.35 rows=5698378 width=39)
                                 Hash Cond: ("outer".l_suppkey = "inner".s_suppkey)
                                     -> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14)
                                            Hash Cond: ("outer".l_orderkey = "inner".o_orderkey)
                                                   -> XN Seq Scan on lineitem li (cost=0.00..60012.15 rows=6001215 width=22)
                                                   -> XN Hash (cost=17803.81..17803.81 rows=1424306 width=8)
                                                           -> XN Seq Scan on orders o (cost=0.00..17803.81 rows=1424306 width=8)
                                                                    Filter: (o_orderdate > '1992-05-01'::date)
                                     -> XN Hash (cost=100.00..100.00 rows=10000 width=33)
                                             -> XN Seq Scan on supplier s (cost=0.00..100.00 rows=10000 width=33)
```

**nota**  
O plano de consulta de exemplo é uma visualização simplificada e de alto nível da execução da consulta. Ele não ilustra os detalhes do processamento paralelo da consulta. Para obter informações detalhadas, execute a consulta e use as visualizações [SVL\_QUERY\_SUMMARY](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_SUMMARY.html) ou [SVL\_QUERY\_REPORT](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_REPORT.html) pata obter informações do resumo da consulta.

## Editor de Consultas V2 do Amazon Redshift
<a name="query-editor-v2"></a>

Você também pode visualizar os planos de consulta no Amazon Redshift usando a opção **Explain** no editor de consultas v2. Para obter instruções, consulte [Como trabalhar com o editor de consultas v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) na documentação do Amazon Redshift.

O plano de consulta gerado pelo editor de consultas v2 inclui as seguintes informações:
+ Quais operações o mecanismo de execução realiza, lendo os resultados de baixo para cima.
+ Que tipo de etapa cada operação executa.
+ Quais tabelas e colunas são usadas em cada operação.
+ Quantos dados são processados em cada operação, em termos de número de linhas e largura de dados em bytes.
+ O custo relativo da operação (Custo é uma medida que compara os tempos relativos de execução das etapas dentro de um plano. Ele não fornece informações precisas sobre os tempos reais de execução ou o consumo de memória, nem fornece uma comparação significativa entre os planos de execução. No entanto, o custo fornece uma indicação de quais operações em uma consulta estão consumindo mais recursos.)

## Planos EXPLAIN
<a name="explain-plans"></a>

Você pode usar a tabela do sistema [STL\_EXPLAIN](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_EXPLAIN.html) para exibir o plano `EXPLAIN` de uma consulta que foi enviada para execução. No geral, o uso do `STL_EXPLAIN` pode ajudar a melhorar oa performance, a eficiência e a economia de suas consultas do Amazon Redshift.

Os benefícios de usar o `STL_EXPLAIN` são:
+ **Otimização de performance**: o `STL_EXPLAIN` pode ajudar a identificar áreas de uma consulta que podem ser otimizadas para melhorar a performance.
+ **Planejamento de consultas**: o `STL_EXPLAIN` pode fornecer informações sobre como o Amazon Redshift está executando a consulta e pode ajudar a identificar possíveis gargalos na consulta.
+ **Depuração**: o `STL_EXPLAIN` pode ajudar a diagnosticar problemas com uma consulta mostrando as etapas que o Amazon Redshift executa para realizar essa consulta.
+ **Compreender o comportamento do Amazon Redshift**: o `STL_EXPLAIN` pode fornecer insights sobre como o Amazon Redshift processa consultas. Isso pode ajudar a melhorar sua compreensão do comportamento do Amazon Redshift.
+ **Otimização de custos**: o `STL_EXPLAIN` pode fornecer informações sobre o custo estimado de uma consulta. Isso pode ajudar a identificar áreas em que é possível otimizar custos.

A consulta a seguir é um exemplo que retorna os nós do plano para uma determinada consulta:

```
select nodeid as id,
       plannode,
       info
from stl_explain
where query=1042904 
order by nodeid;
```

A consulta anterior retorna a saída a seguir.



![Saída de uma consulta que retorna os nós do plano de consulta.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/query-lifecycle-redshift/images/query-output.png)


O plano `EXPLAIN` retorna métricas úteis para cada operação, incluindo métricas sobre custo, linhas e largura. Por exemplo, a linha 7 da consulta anterior retorna o seguinte:

```
->  XN Hash Join DS_DIST_NONE  (cost=21364.58..273387.85 rows=5698378 width=14)
```

### Custo
<a name="query-plan-cost"></a>

O custo é um valor relativo que é útil para comparar operações em um plano. O custo consiste em dois valores decimais separados por dois pontos. Neste exemplo, o custo é igual a `21364.58..273387.85`. Considere o seguinte:
+ O primeiro valor (neste caso, `21364.58`) fornece o custo relativo de retornar a primeira linha para essa operação.
+ O segundo valor (neste caso, `273387.85`) fornece o custo relativo de concluir a operação. 

Os custos no plano de consulta são cumulativos e somam das linhas inferiores para as superiores. No exemplo de saída acima, a linha 7 inclui o custo das outras operações nas linhas abaixo de si mesma (ou seja, linhas de 8 a 12 e posteriores).

### Linhas
<a name="query-plan-rows"></a>

Linhas é o número previsto de linhas a retornar. Neste exemplo, a previsão de retorno da verificação é de 5.698.378 linhas. A estimativa de linhas baseia-se nas estatísticas disponíveis geradas pelo comando `ANALYZE`. Se `ANALYZE` não tiver sido executado recentemente, a estimativa será menos confiável.

### Largura
<a name="query-plan-width"></a>

Largura é a largura estimada da linha média, em bytes. Neste exemplo, a previsão de largura da linha média é de 14 bytes.