

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Piano di query in Amazon Redshift
<a name="query-plan"></a>

Un *piano di query* è un elenco di istruzioni che il motore di esecuzione deve seguire per eseguire una query sui dati. È possibile creare un piano di query eseguendo il comando [EXPLAIN](https://docs.aws.amazon.com/redshift/latest/dg/r_EXPLAIN.html) seguito dal testo effettivo della query, come mostra la seguente query di esempio:

```
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 si esegue il `EXPLAIN` comando per l'esempio di query precedente, si ottiene il seguente risultato:

```
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**  
L'output del piano di query di esempio è una visualizzazione semplificata e di alto livello dell'esecuzione delle query. Il piano di esempio non illustra i dettagli dell'elaborazione parallela delle query. Per informazioni dettagliate, eseguite la query e quindi utilizzate le viste SVL\_QUERY\_SUMMARY o [[SVL\_QUERY\_REPORT](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_REPORT.html) per ottenere informazioni di riepilogo](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_SUMMARY.html) della query.

## Editor di query v2 di Amazon Redshift
<a name="query-editor-v2"></a>

Puoi anche visualizzare i piani di query in Amazon Redshift utilizzando l'opzione **Explain** nell'editor di query v2. Per istruzioni, consulta [Working with Query Editor v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html) nella documentazione di Amazon Redshift.

Il piano di query generato dall'editor di query v2 include le seguenti informazioni:
+ Quali operazioni esegue il motore di esecuzione, leggendo i risultati dal basso verso l'alto
+ Che tipo di passaggio esegue ciascuna operazione
+ Quali tabelle e colonne vengono utilizzate in ogni operazione
+ Quanti dati vengono elaborati in ciascuna operazione, in termini di numero di righe e larghezza dei dati in byte
+ Il costo relativo dell'operazione (Costo) è una misura che confronta i tempi di esecuzione relativi delle fasi all'interno di un piano. Il costo non fornisce informazioni precise sui tempi di esecuzione effettivi o sul consumo di memoria, né fornisce un confronto significativo tra i piani di esecuzione. Il costo, tuttavia, fornisce un'indicazione delle operazioni di una query che consumano la maggior parte delle risorse.)

## SPIEGA i piani
<a name="explain-plans"></a>

È possibile utilizzare la tabella di sistema [STL\_EXPLAIN](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_EXPLAIN.html) per visualizzare il `EXPLAIN` piano di una query che è stata inviata per l'esecuzione. Nel complesso, l'utilizzo `STL_EXPLAIN` può contribuire a migliorare le prestazioni, l'efficienza e l'economicità delle query su Amazon Redshift.

I vantaggi dell'utilizzo sono: `STL_EXPLAIN`
+ **Ottimizzazione delle prestazioni**: `STL_EXPLAIN` può aiutare a identificare le aree di una query che possono essere ottimizzate per prestazioni migliori.
+ **Pianificazione delle query**: `STL_EXPLAIN` può fornire informazioni su come Amazon Redshift esegue la query e può aiutare a identificare potenziali colli di bottiglia nella query.
+ **Debug**: `STL_EXPLAIN` può aiutare a diagnosticare problemi relativi a una query mostrando i passaggi utilizzati da Amazon Redshift per eseguire tale query.
+ **Comprendere il comportamento di Amazon Redshift**: `STL_EXPLAIN` può fornire informazioni dettagliate su come Amazon Redshift elabora le query. Questo può aiutarti a migliorare la tua comprensione del comportamento di Amazon Redshift.
+ **Ottimizzazione dei costi**: `STL_EXPLAIN` può fornire informazioni sul costo stimato di una query. Questo può aiutarti a identificare le aree in cui puoi ottimizzare i costi.

La seguente query è un esempio che restituisce i nodi del piano per una determinata query:

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

La query precedente restituisce il seguente risultato.



![Output di una query che restituisce i nodi del piano di query.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/query-lifecycle-redshift/images/query-output.png)


Il `EXPLAIN` piano restituisce metriche utili per ogni operazione, incluse le metriche relative a costo, righe e larghezza. Ad esempio, la riga 7 della query precedente restituisce quanto segue:

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

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

Il costo è un valore relativo utile per confrontare le operazioni all'interno di un piano. Il costo è costituito da due valori decimali separati da due periodi. In questo esempio, il costo è uguale a. `21364.58..273387.85` Considera i seguenti aspetti:
+ Il primo valore (in questo caso,`21364.58`) fornisce il costo relativo della restituzione della prima riga per questa operazione.
+ Il secondo valore (in questo caso`273387.85`) fornisce il costo relativo del completamento dell'operazione. 

I costi del piano di interrogazione sono cumulativi e vengono aggregati dalle righe inferiori a quelle più alte. Nell'esempio riportato sopra, la riga 7 include il costo delle altre operazioni nelle righe sottostanti (ovvero, righe 8-12 e successive).

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

Righe è il numero stimato di righe da restituire. In questo esempio, si prevede che la scansione restituisca 5.698.378 righe. La stima delle righe si basa sulle statistiche disponibili generate dal comando. `ANALYZE` Se non `ANALYZE` è stata eseguita di recente, la stima è meno affidabile.

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

La larghezza è la larghezza stimata della riga media, in byte. In questo esempio, si prevede che la larghezza media della riga sia di 14 byte.