SPIEGA gli operatori per i piani di query di Amazon Redshift - AWS Guida prescrittiva

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

SPIEGA gli operatori per i piani di query di Amazon Redshift

Questa sezione descrive brevemente gli operatori che vedete più spesso nell'EXPLAINoutput.

Scansione sequenziale

L'operatore scansione sequenziale (Seq Scan) indica una scansione della tabella. Seq Scan analizza ogni colonna della tabella in sequenza dall'inizio alla fine e valuta i vincoli di interrogazione (nella clausola) per ogni riga. WHERE

Operatori di combinazione

Amazon Redshift seleziona gli operatori join basati sul progetto fisico delle tabelle combinate, la posizione dei dati necessari per il join e i requisiti specifici della stessa query.

Loop nidificato

Un loop annidato viene utilizzato principalmente per i cross-join. Le combinazioni incrociate sono combinazione senza una condizione di combinazione nel prodotto cartesiano delle due tabelle. I loop annidati vengono in genere eseguiti come loop join annidati, che sono i tipi di join più lenti possibili. Se è presente un loop annidato, è possibile visualizzare un evento di avviso di loop annidato nella vista STL_ALERT_EVENT_LOG. È possibile eseguire la seguente query per identificare le query con loop annidati:

select q.query, trim(q.querytxt) as sql_query, q.starttime from stl_query q join stl_alert_event_log l on l.query = q.query and l.event like 'Nested Loop Join in the query plan%' order by q.starttime desc;

Hash, join e hash.

Gli operatori hash join e hash sono in genere più veloci di un nested loop join. Questi operatori vengono utilizzati per i join interni e i join esterni sinistro e destro. È possibile utilizzare gli operatori hash join e hash quando si uniscono tabelle in cui le colonne di join non sono sia chiavi di distribuzione che chiavi di ordinamento. L'operatore hash crea la tabella hash per la tabella interna del join. L'operatore hash join legge la tabella esterna, esegue l'hash della colonna di join e trova le corrispondenze nella tabella hash interna.

Merge join

L'operatore merge join è in genere il join più veloce e viene utilizzato per i join interni e i join esterni. Il merge join non viene utilizzato per i join completi. È possibile utilizzare un merge join quando si uniscono tabelle in cui le colonne di unione sono sia chiavi di distribuzione che chiavi di ordinamento e quando meno del 20 percento delle tabelle di unione non sono ordinate. L'operatore merge join legge due tabelle ordinate in ordine e trova le righe corrispondenti. Per visualizzare la percentuale di righe non ordinate, interrogate la tabella di sistema SVV_TABLE_INFO.

Operatori di aggregazione

Il piano di interrogazione utilizza i seguenti operatori nelle query che coinvolgono funzioni e operazioni aggregate: GROUP BY

  • Aggregato: operatore per funzioni aggregate scalari come e AVG SUM

  • HashAggregate— Operatore per funzioni aggregate raggruppate non ordinate

  • GroupAggregate— Operatore per funzioni aggregate raggruppate e ordinate

Operatori di ordinamento

Il piano di interrogazione utilizza i seguenti operatori quando le query devono ordinare o unire set di risultati:

  • Ordinamento: valuta la ORDER BY clausola e altre operazioni di ordinamento, ad esempio gli ordinamenti richiesti dalle interrogazioni e dai join, dalle UNION interrogazioni e dalle funzioni delle finestre SELECT DISTINCT

  • Unisci: produce risultati ordinati finali in base ai risultati ordinati intermedi derivanti da operazioni parallele

Operatori UNION, INTERSECT ed EXCEPT

Il piano di interrogazione utilizza i seguenti operatori per le query che implicano operazioni di set con, e: UNION INTERSECT EXCEPT

  • Subquery: utilizzata per eseguire query UNION

  • Hash Intersect Distinct: utilizzato per eseguire query INTERSECT

  • SetOp Eccetto: utilizzato per eseguire EXCEPT (o) query MINUS

Altri operatori

I seguenti operatori vengono inoltre visualizzati frequentemente nell'EXPLAINoutput delle query di routine:

  • Unico: rimuove i duplicati per SELECT DISTINCT interrogazioni e interrogazioni UNION

  • Limite: elabora la clausola LIMIT

  • Finestra: esegue le funzioni della finestra

  • Risultato: esegue funzioni scalari che non implicano alcun accesso alla tabella

  • Sottopiano: utilizzato per determinate sottoquery

  • Rete: invia i risultati intermedi al nodo leader per un'ulteriore elaborazione

  • Materializza: salva le righe da inserire nei loop join annidati e in alcuni merge join