Operatori unari

Un operatore unario ha un solo elemento secondario relazionale.

I seguenti operatori sono unari:

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:

Piano di esecuzione dell&#39;operatore di aggregazione

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:

Applica il piano di esecuzione dell&#39;operatore di mutazioni

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:

Piano di esecuzione dell&#39;operatore di struct di calcolo

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:

Piano di esecuzione dell&#39;operatore di filtro

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:

Piano di esecuzione dell&#39;operatore di limite

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.

Piano di esecuzione dell&#39;operatore di campionamento di Bernoulli

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:

Piano di esecuzione dell&#39;operatore di esempio del serbatoio

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:

Piano di esecuzione dell&#39;operatore Union di divisione locale

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:

Serializza il piano di esecuzione dell&#39;operatore dei risultati

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:

Piano di esecuzione dell&#39;operatore di ordinamento

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:

Operatore di ordinamento con piano di esecuzione del limite

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.