Operatori di esecuzione delle query

Questa pagina descrive gli operatori utilizzati nei piani di esecuzione delle query di Spanner. Per informazioni su come recuperare un piano di esecuzione per una query specifica utilizzando la console Google Cloud , consulta Informazioni su come Spanner esegue le query.

I piani di esecuzione supportano i database con dialetto GoogleSQL e PostgreSQL.

Mappatura di costrutti SQL a operatori di esecuzione delle query

La mappatura esatta tra i costrutti SQL e gli operatori di esecuzione delle query dipende dall'ottimizzazione delle query. La seguente tabella mostra alcuni mapping comuni:

SQL Operatore di esecuzione delle query
Riferimento tabella Scansione tabella, scansione indice
WHERE Filtro scansione, Filtro
GROUP BY Aggregate
Funzione scalare (ad esempio ISNULL) Computing
Funzione aggregata (ad esempio SUM) Aggregate
JOIN Qualsiasi operatore di join; vedi Join
Sottoquery Sottoquery scalare o array
LIMIT Limite, Limite ordinamento
ORDER BY Ordina, Limite di ordinamento

Operatori di esecuzione delle query

Questa sezione elenca tutti gli operatori di esecuzione delle query che possono costituire un piano di esecuzione delle query in Spanner.

Operatori foglia

Operatori senza figli.

Nome Riepilogo
Array unnest Appiattisce un array di input in righe di elementi.
Genera relazione Restituisce zero o più righe.
Relazione tra unità Restituisce una riga.
Relazione vuota Non restituisce righe.
Scan Analizza una fonte di righe e le restituisce.
Analisi dei filtri Funziona con la scansione per ridurre il numero di righe lette dal database.

Operatori unari

Operatori con un singolo figlio relazionale.

Nome Riepilogo
Aggregate Implementa le istruzioni SQL e le funzioni di aggregazione GROUP BY.
Applicare le mutazioni Applica le modifiche di un'istruzione DML (Data Manipulation Language) alla tabella.
Crea batch Raggruppa le righe di input in una sequenza.
Computing Produce output leggendo le righe di input e aggiungendo una o più colonne aggiuntive calcolate utilizzando espressioni scalari.
Compute struct Crea una variabile per una struttura che contiene campi per ciascuna delle colonne di input.
DataBlockToRowAdapter Adatta un metodo di esecuzione orientato ai batch a un metodo di esecuzione orientato alle righe.
Filtro Legge tutte le righe dell'input, applica un predicato scalare a ogni riga e restituisce solo le righe che soddisfano il predicato.
Limite Vincola il numero di righe restituite.
Local split union Trova le suddivisioni della tabella archiviate sul server locale, esegue una sottoquery su ogni suddivisione, quindi crea un'unione che combina tutti i risultati.
Assegnazione di ID casuali Produce l'output leggendo le righe di input e aggiungendo un numero casuale a ogni riga.
RowToDataBlockAdapter Adatta un metodo di esecuzione orientato alle righe a un metodo di esecuzione orientato ai batch.
Serialize result Serializza ogni riga del risultato finale della query per la restituzione al client.
Ordina Legge le righe di input, le ordina in base alle colonne e restituisce i risultati ordinati.
Funzione con valori di tabella (TVF) Produce l'output leggendo le righe di input e applicando la funzione specificata.
Union input Restituisce i risultati a un operatore Union All.

Operatori binari

Operatori con due figli relazionali.

Nome Riepilogo
Richiedi di partecipare Applica ogni riga sul lato input al lato mappa utilizzando un metodo di applicazione.
Hash join Legge le righe dell'input contrassegnate come build e le inserisce in una tabella hash in base a una condizione di join.
Unione di tipo merge Utilizza entrambi i flussi di input contemporaneamente e restituisce le righe quando la condizione di join è soddisfatta.
Unione ricorsiva Esegue l'unione di due input, uno che rappresenta un caso base e l'altro che rappresenta un caso ricorsivo.

Operatori n-ari

Operatori con più di due elementi secondari relazionali.

Nome Riepilogo
Union all Combina tutti i set di righe dei relativi elementi secondari senza rimuovere i duplicati.

Operatori distribuiti

Operatori che vengono eseguiti su più server.

Nome Riepilogo
Unione distribuita Divide concettualmente una o più tabelle in più suddivisioni, valuta in remoto una sottoquery in modo indipendente su ogni suddivisione e poi unisce tutti i risultati.
Applicazione distribuita Estende l'operatore di join applicato eseguendo l'operazione su più server.
Unione di unione distribuita Distribuisce una query su più server remoti per poi combinarne i risultati e produrre un risultato ordinato.
Push broadcast hash join Implementa i join SQL utilizzando un join hash distribuito.

Sottoquery scalari

Sottoespressioni SQL che restituiscono un singolo valore scalare.

Nome Riepilogo
Sottoquery scalari Sottoespressioni SQL che restituiscono un singolo valore scalare.

Sottoquery di array

Sottoespressioni SQL che restituiscono un array.

Nome Riepilogo
Sottoquery di array Sottoespressioni SQL che restituiscono un array.

Costruttore di struct

Un operatore che crea una struct (una raccolta di campi) per le righe risultanti da un'operazione di calcolo.

Nome Riepilogo
Struct constructor Un operatore che crea una struct (una raccolta di campi) per le righe risultanti da un'operazione di calcolo.