Analisi del piano di query - Amazon Redshift

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à.

Analisi del piano di query

Prima di analizzare il piano di query, è necessario acquisire familiarità sulla sua lettura. Se non hai familiarità con la lettura di un piano di query, consigliamo di consultare Piano di query prima di continuare.

Esegui il comando EXPLAIN per ottenere un piano di query. Per analizzare i dati forniti dal piano di query, segui queste fasi:

  1. Individua le fasi con il costo più alto. Concentrati sulla loro ottimizzazioni quando procederai con le fasi rimanenti.

  2. Guarda i tipi di combinazione:

    • Nested Loop (Loop nidificato): combinazioni di questo tipo si verificano solitamente perché è stata omessa la condizione di combinazione. Per le soluzioni consigliate, consultare Loop nidificato.

    • Hash and Hash Join (Hash e Hash Join): gli hash join vengono utilizzati nel caso in cui le tabelle combinate in cui si trovano le colonne di combinazione non siano chiavi di distribuzione né chiavi di ordinamento. Per le soluzioni consigliate, consultare Hash join.

    • Merge Join: non è necessaria alcuna modifica.

  3. Nota quale tabella viene utilizzata per le inner join e quale per le outer join. Generalmente, il motore di query sceglie la tabella più piccola per le inner join, la più grande per le outer join. Se questa scelta non avviene, le tue statistiche saranno probabilmente scadute. Per le soluzioni consigliate, consultare Statistiche della tabella mancanti o scadute.

  4. Verifica l'esistenza di operazioni di ordinamento ad alto costo. Nel caso in cui ci siano, consultare Righe non ordinate o ordinate in modo errato per le soluzioni consigliate.

  5. Cerca i seguenti operatori di trasmissione dove esistono operazioni ad alto costo:

    • DS_BCAST_INNER: Indica che la tabella viene trasmessa a tutti i nodi di calcolo. Questo va bene per una piccola tabella, ma non è ideale per una tabella più grande.

    • DS_DIST_ALL_INNER: indica che tutto il carico di lavoro si trova in una singola sezione.

    • DS_DIST_BOTH: indica una ridistribuzione impegnativa.

    Per le soluzioni consigliate in queste situazioni, consultare Distribuzione dei dati non ottimale.