Un operatore unario ha un solo elemento secondario relazionale.
I seguenti operatori sono unari:
- Aggregate
- Applicare le mutazioni
- Crea batch
- Computing
- Compute struct
- DataBlockToRowAdapter
- Filtro
- Limite
- Local split union
- Random Id Assign
- RowToDataBlockAdapter
- Serialize result
- Ordina
- TVF
- Union input
Schema del database
Le query e i piani di esecuzione in questa pagina si basano sul seguente schema del database:
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
LastName STRING(1024),
SingerInfo BYTES(MAX),
BirthDate DATE
) PRIMARY KEY(SingerId);
CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName);
CREATE TABLE Albums (
SingerId INT64 NOT NULL,
AlbumId INT64 NOT NULL,
AlbumTitle STRING(MAX),
MarketingBudget INT64
) PRIMARY KEY(SingerId, AlbumId),
INTERLEAVE IN PARENT Singers ON DELETE CASCADE;
CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle);
CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) STORING (MarketingBudget);
CREATE TABLE Songs (
SingerId INT64 NOT NULL,
AlbumId INT64 NOT NULL,
TrackId INT64 NOT NULL,
SongName STRING(MAX),
Duration INT64,
SongGenre STRING(25)
) PRIMARY KEY(SingerId, AlbumId, TrackId),
INTERLEAVE IN PARENT Albums ON DELETE CASCADE;
CREATE INDEX SongsBySingerAlbumSongNameDesc ON Songs(SingerId, AlbumId, SongName DESC), INTERLEAVE IN Albums;
CREATE INDEX SongsBySongName ON Songs(SongName);
CREATE TABLE Concerts (
VenueId INT64 NOT NULL,
SingerId INT64 NOT NULL,
ConcertDate DATE NOT NULL,
BeginTime TIMESTAMP,
EndTime TIMESTAMP,
TicketPrices ARRAY<INT64>
) PRIMARY KEY(VenueId, SingerId, ConcertDate);
Puoi utilizzare le seguenti istruzioni DML (Data Manipulation Language) per aggiungere dati a queste tabelle:
INSERT INTO Singers (SingerId, FirstName, LastName, BirthDate)
VALUES (1, "Marc", "Richards", "1970-09-03"),
(2, "Catalina", "Smith", "1990-08-17"),
(3, "Alice", "Trentor", "1991-10-02"),
(4, "Lea", "Martin", "1991-11-09"),
(5, "David", "Lomond", "1977-01-29");
INSERT INTO Albums (SingerId, AlbumId, AlbumTitle)
VALUES (1, 1, "Total Junk"),
(1, 2, "Go, Go, Go"),
(2, 1, "Green"),
(2, 2, "Forever Hold Your Peace"),
(2, 3, "Terrified"),
(3, 1, "Nothing To Do With Me"),
(4, 1, "Play");
INSERT INTO Songs (SingerId, AlbumId, TrackId, SongName, Duration, SongGenre)
VALUES (2, 1, 1, "Let's Get Back Together", 182, "COUNTRY"),
(2, 1, 2, "Starting Again", 156, "ROCK"),
(2, 1, 3, "I Knew You Were Magic", 294, "BLUES"),
(2, 1, 4, "42", 185, "CLASSICAL"),
(2, 1, 5, "Blue", 238, "BLUES"),
(2, 1, 6, "Nothing Is The Same", 303, "BLUES"),
(2, 1, 7, "The Second Time", 255, "ROCK"),
(2, 3, 1, "Fight Story", 194, "ROCK"),
(3, 1, 1, "Not About The Guitar", 278, "BLUES");
Aggregazione
Un operatore aggregato implementa istruzioni SQL GROUP BY e funzioni di aggregazione (ad esempio COUNT). L'input per un operatore aggregato viene partizionato logicamente in gruppi disposti in colonne chiave (o in un singolo gruppo se GROUP BY non è presente). Per ogni gruppo vengono calcolati zero o più aggregati.
La seguente query mostra questo operatore:
SELECT s.singerid,
Avg(s.duration) AS average,
Count(*) AS count
FROM songs AS s
GROUP BY singerid;
/*----------+---------+-------+
| SingerId | average | count |
+----------+---------+-------+
| 3 | 278 | 1 |
| 2 | 225.875 | 8 |
+----------+---------+-------*/
La query raggruppa per SingerId ed esegue un'aggregazione AVG e un'aggregazione COUNT.
Il segmento del piano di esecuzione viene visualizzato nel seguente modo:

Gli operatori di aggregazione possono essere basati sul flusso o basati sull'hash. Il piano di esecuzione precedente mostra un aggregato basato sul flusso. Gli aggregati basati su stream vengono letti da
input preordinati (se è presente GROUP BY) e calcolano il gruppo
senza blocchi. Gli aggregati basati su hash creano tabelle hash per mantenere
aggregati incrementali di più righe di input contemporaneamente. Gli aggregati basati su stream sono più veloci e utilizzano meno memoria rispetto agli aggregati basati su hash, ma richiedono che l'input sia ordinato (in base alle colonne chiave o agli indici secondari).
Per gli scenari distribuiti, l'operatore di aggregazione si divide in una coppia locale-globale. Ogni server remoto esegue l'aggregazione locale sulle proprie righe di input e poi restituisce i risultati al server radice. Il server radice esegue l'aggregazione globale.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
Proprietà
| Nome | Descrizione |
|---|---|
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Applica mutazioni
Un operatore applica mutazioni applica le mutazioni di un'istruzione DML (Data Manipulation Language) alla tabella. È l'operatore principale in un piano di query per un'istruzione DML.
La seguente query mostra questo operatore:
DELETE FROM singers
WHERE firstname = 'Alice';
/*
4 rows deleted This statement deleted 4 rows and did not return any rows.
*/
Il piano di esecuzione viene visualizzato nel seguente modo:

Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
Proprietà
| Nome | Descrizione |
|---|---|
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Creazione batch
Un operatore create batch raggruppa le righe di input in una sequenza. Un'operazione di creazione batch si verifica di solito nell'ambito di un'operazione di applicazione incrociata distribuita. Le righe di input possono essere riordinate durante il batch. Il numero di righe di input raggruppate in batch in ogni esecuzione dell'operatore batch varia.
Consulta l'operatore cross-apply distribuito per un esempio di operatore di creazione batch in un piano di esecuzione.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
Proprietà
| Nome | Descrizione |
|---|---|
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Computing
Un operatore compute produce output leggendo le righe di input e aggiungendo una o più colonne aggiuntive calcolate utilizzando espressioni scalari. Consulta l'operatore Union All per un esempio di operatore di calcolo in un piano di esecuzione.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
Proprietà
| Nome | Descrizione |
|---|---|
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Compute struct
Un operatore compute struct crea una variabile per una struttura che contiene campi per ciascuna delle colonne di input.
La seguente query mostra questo operatore:
SELECT FirstName,
ARRAY(SELECT AS STRUCT song.SongName, song.SongGenre
FROM Songs AS song
WHERE song.SingerId = singer.SingerId)
FROM singers AS singer
WHERE singer.SingerId = 3;
/*-----------+------------------------------------------------------+
| FirstName | Unspecified |
+-----------+------------------------------------------------------+
| Alice | [["Not About The Guitar","BLUES"]] |
+-----------+------------------------------------------------------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

Nel piano di esecuzione, l'operatore di sottoquery array riceve l'input da un operatore di struttura di calcolo. L'operatore compute struct crea una struttura dalle colonne
SongName e SongGenre nella tabella Songs.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
Proprietà
| Nome | Descrizione |
|---|---|
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Filtro
Un operatore filtro legge tutte le righe dell'input, applica un predicato scalare a ogni riga e poi restituisce solo le righe che soddisfano il predicato.
La seguente query mostra questo operatore:
SELECT s.lastname
FROM (SELECT s.lastname
FROM singers AS s
LIMIT 3) s
WHERE s.lastname LIKE 'Rich%';
/*----------+
| LastName |
+----------+
| Richards |
+----------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

Spanner implementa il predicato per i cantanti il cui cognome inizia con Rich come
filtro. Il filtro riceve l'input da una scansione dell'indice e restituisce le righe in cui LastName inizia con Rich.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Limite
Un operatore limit vincola il numero di righe restituite. Un parametro facoltativo OFFSET
specifica la riga iniziale da restituire. Negli scenari distribuiti, l'operatore di limite si divide in una coppia locale-globale. Ogni server remoto
applica il limite locale alle proprie righe di output, quindi restituisce i risultati al
server radice. Il server radice aggrega le righe inviate dai server remoti e
poi applica il limite globale.
La seguente query mostra questo operatore:
SELECT s.songname
FROM songs AS s
LIMIT 3;
/*----------------------+
| SongName |
+----------------------+
| Not About The Guitar |
| The Second Time |
| Starting Again |
+----------------------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

Il limite locale è il limite per ogni server remoto. Il server radice aggrega le righe dai server remoti e poi applica il limite globale.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Assegnazione ID casuale
Un operatore assegnazione ID casuale produce l'output leggendo le righe di input e
aggiungendo un numero casuale a ogni riga. Funziona con un operatore Filter o Sort
per ottenere metodi di campionamento. I metodi di campionamento supportati sono
Bernoulli
e Reservoir.
Ad esempio, la seguente query utilizza il campionamento di Bernoulli con una frequenza di campionamento del 10%.
SELECT s.songname
FROM songs AS s TABLESAMPLE bernoulli (10 PERCENT);
/*----------------+
| SongName |
+----------------+
| Starting Again |
+----------------*/
Poiché il risultato è un campione, può variare ogni volta che viene eseguita la query, anche se la query è la stessa.

In questo piano di esecuzione, l'operatore Random Id Assign riceve l'input da
un operatore distributed union, che riceve l'input
da una scansione dell'indice. L'operatore restituisce le righe con ID casuali e
l'operatore Filter applica quindi un predicato scalare agli ID casuali e
restituisce circa il 10% delle righe.
L'esempio seguente utilizza Reservoir
campionamento con una frequenza di campionamento di 2 righe.
SELECT s.songname
FROM songs AS s TABLESAMPLE reservoir (2 rows);
/*------------------------+
| SongName |
+------------------------+
| I Knew You Were Magic |
| The Second Time |
+------------------------*/
Poiché il risultato è un campione, può variare ogni volta che viene eseguita la query, anche se la query è la stessa.
Questo è il piano di esecuzione:

In questo piano di esecuzione, l'operatore Random Id Assign riceve l'input da
un operatore distributed union, che riceve l'input
da una scansione dell'indice. L'operatore restituisce le righe con ID casuali e
l'operatore Sort applica quindi l'ordinamento agli ID casuali e applica
LIMIT con 2 righe.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Sindacato locale
Un operatore unione suddivisione locale trova le suddivisioni della tabella archiviate sul server locale, esegue una sottoquery su ogni suddivisione e poi crea un'unione che combina tutti i risultati.
Una local split union viene visualizzata nei piani di esecuzione che analizzano una tabella placement. I posizionamenti possono aumentare il numero di suddivisioni in una tabella, rendendo più efficiente la scansione delle suddivisioni in batch in base alle loro posizioni di archiviazione fisica.
Ad esempio, supponiamo che la tabella Singers utilizzi una chiave di posizionamento per partizionare
i dati dei cantanti:
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(MAX) NOT NULL,
...
Location STRING(MAX) NOT NULL PLACEMENT KEY
) PRIMARY KEY (SingerId);
Ora considera questa query:
SELECT BirthDate FROM Singers;
Questo è il piano di esecuzione:

L'unione distribuita invia una sottoquery a ogni batch di
divisioni memorizzate fisicamente insieme nello stesso server. Su ogni server, l'unione
delle suddivisioni locali trova le suddivisioni che archiviano i dati Singers, esegue la sottoquery su ogni
suddivisione e restituisce i risultati combinati. In questo modo, l'unione distribuita e
l'unione locale suddivisa funzionano insieme per eseguire la scansione in modo efficiente della tabella Singers. Senza
un'operazione Union suddivisa locale, l'operazione Union distribuita invierebbe una RPC per suddivisione anziché per batch suddiviso, con conseguenti round trip RPC ridondanti quando c'è più di una suddivisione per batch.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
DataBlockToRowAdapter
L'ottimizzatore delle query Spanner inserisce automaticamente un operatore DataBlockToRowAdapter tra una coppia di operatori che operano
utilizzando metodi di esecuzione diversi. Il suo input è un operatore che utilizza il metodo di esecuzione orientato ai batch e il suo output viene inserito in un operatore che esegue il metodo di esecuzione orientato alle righe. Per maggiori informazioni, vedi Ottimizzare l'esecuzione
delle query.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
RowToDataBlockAdapter
L'ottimizzatore delle query Spanner inserisce automaticamente un operatore RowToDataBlockAdapter tra una coppia di operatori che operano
utilizzando metodi di esecuzione diversi. Il suo input è un operatore che utilizza il metodo di esecuzione orientato alle righe e il suo output viene inserito in un operatore che esegue il metodo di esecuzione orientato ai batch. Per saperne di più, consulta Ottimizzare l'esecuzione delle query.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Serializza risultato
Un operatore serialize result è un caso speciale dell'operatore compute struct che serializza ogni riga del risultato finale della query per restituirla al client.
La seguente query mostra questo operatore:
SELECT array
(
select as struct so.songname,
so.songgenre
FROM songs AS so
WHERE so.singerid = s.singerid)
FROM singers AS s;
/*------------------------------------------------------------------+
| Unspecified |
+------------------------------------------------------------------+
| [] |
| [[Let's Get Back Together, COUNTRY], [Starting Again, ROCK]] |
| [["Not About The Guitar", "BLUES"]] |
| [] |
| [] |
+------------------------------------------------------------------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

L'operatore di serializzazione dei risultati crea un risultato che contiene, per ogni riga della
tabella Singers, un array di coppie SongName e SongGenre per i brani
del cantante.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Ordina
Un operatore sort legge le righe di input, le ordina per colonna o colonne e poi restituisce i risultati ordinati.
La seguente query mostra questo operatore:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
| BLUES |
| CLASSICAL |
| COUNTRY |
| ROCK |
| ROCK |
| ROCK |
+--------------------------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

In questo piano di esecuzione, l'operatore di ordinamento riceve le righe di input da un operatore distributed union, ordina le righe di input e restituisce le righe ordinate a un operatore serialize result.
Per limitare il numero di righe restituite, un operatore di ordinamento può facoltativamente avere
i parametri LIMIT e OFFSET. Per gli scenari distribuiti, un operatore di ordinamento con
un operatore LIMIT o OFFSET si divide in una coppia locale-globale. Ogni server remoto applica l'ordinamento e il limite o l'offset locale alle proprie righe di input, quindi restituisce i risultati al server radice. Il server radice
aggrega le righe inviate dai server remoti, le ordina e poi applica il
limite/offset globale.
La seguente query mostra questo operatore:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre
LIMIT 3;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
+--------------------------*/
Il piano di esecuzione viene visualizzato nel seguente modo:

Il piano di esecuzione mostra il limite locale per i server remoti e il limite globale per il server radice.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
TVF
Un operatore funzione con valori di tabella produce l'output leggendo le righe di input e applicando la funzione specificata. La funzione potrebbe implementare la mappatura e restituire lo stesso numero di righe dell'input. Può anche essere un generatore che restituisce più righe o un filtro che restituisce meno righe.
La seguente query mostra questo operatore:
SELECT genre,
songname
FROM ml.predict(model genreclassifier, TABLE songs)
/*-----------------------+--------------------------+
| Genre | SongName |
+-----------------------+--------------------------+
| Country | Not About The Guitar |
| Rock | The Second Time |
| Pop | Starting Again |
| Pop | Nothing Is The Same |
| Country | Let's Get Back Together |
| Pop | I Knew You Were Magic |
| Electronic | Blue |
| Rock | 42 |
| Rock | Fight Story |
+-----------------------+--------------------------*/
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |
Input del sindacato
Un operatore Union Input restituisce i risultati a un operatore Union All. Consulta l'operatore Union All per un esempio di operatore di input Union in un piano di esecuzione.
Proprietà e statistiche di esecuzione
Una proprietà di un operatore descrive una caratteristica utilizzata quando l'operatore viene eseguito. Una statistica di esecuzione è un valore raccolto durante l'esecuzione della query per aiutarti a valutare le prestazioni dell'operatore.
L'operatore Filtra ha proprietà distinte aggiuntive.Proprietà
| Nome | Descrizione |
|---|---|
| Condizione | Un predicato applicato a ogni riga di input. Se è vero, la riga viene passata all'operatore successivo; se è falso, la riga viene eliminata. |
| Metodo di esecuzione | Nell'esecuzione per riga, l'operatore elabora una riga alla volta. Nell'esecuzione batch, l'operatore elabora un batch di righe contemporaneamente. |
Statistiche di esecuzione
| Nome | Descrizione |
|---|---|
| Latenza | Tempo trascorso di tutte le esecuzioni eseguite nell'operatore. |
| Latenza cumulativa | Il tempo totale dell'operatore corrente e dei relativi discendenti. |
| Tempo CPU | Somma del tempo di CPU dedicato all'esecuzione dell'operatore. |
| Tempo di CPU cumulativo | Il tempo di CPU totale dedicato all'esecuzione dell'operatore e dei relativi discendenti. |
| Tempo di esecuzione | Il tempo totale impiegato per eseguire la query ed elaborare i risultati. |
| Righe restituite | Il numero di righe generate da questo operatore |
| Numero di esecuzioni | Il numero di volte in cui l'operatore è stato eseguito. Alcune esecuzioni possono essere eseguite in parallelo. |