Operadores unarios

Un operador unario tiene un solo operador secundario relacional.

Los siguientes son operadores unarios:

Esquema de la base de datos

Las consultas y los planes de ejecución en esta página se basan en el siguiente esquema de base de datos:

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);

Puedes usar las siguientes declaraciones del lenguaje de manipulación de datos (DML) para agregar datos a estas tablas:

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");

Agregación

Un operador de agregación implementa instrucciones de SQL y funciones de agregación GROUP BY (como COUNT). La entrada de un operador de agregación está particionada de manera lógica en grupos organizados en columnas de claves (o en un solo grupo si GROUP BY no está presente). Para cada grupo, se calculan cero o más agregaciones.

En la siguiente consulta, se muestra este operador:

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 consulta agrupa por SingerId y realiza una agregación AVG y una agregación COUNT.

El segmento del plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de agregación

Los operadores de agregación pueden estar basados en hash o basados en el flujo. En el plan de ejecución anterior, se muestra una agregación basada en transmisiones. Los agregados basados en transmisiones leen de entradas previamente ordenadas (si GROUP BY está presente) y procesan el grupo sin bloquearlo. Las agregaciones basadas en hash compilan tablas hash para mantener las agregaciones incrementales de varias filas de entrada de forma simultánea. Las agregaciones basadas en transmisiones son más rápidas y usan menos memoria que las agregaciones basadas en hash, pero requieren que la entrada se ordene (ya sea en columnas de claves o en índices secundarios).

Para situaciones distribuidas, el operador de agregación se divide en un par local-global. Cada servidor remoto realiza la agregación local en sus filas de entrada y, luego, muestra los resultados en el servidor raíz. El servidor raíz realiza la agregación global.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

Propiedades

Nombre Descripción
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Aplicación de mutaciones

Un operador de aplicación de mutaciones aplica las mutaciones de una declaración de lenguaje de manipulación de datos (DML) a la tabla. Es el operador principal en un plan de consulta para una declaración DML.

En la siguiente consulta, se muestra este operador:

DELETE FROM singers
WHERE  firstname = 'Alice';

/*
4 rows deleted  This statement deleted 4 rows and did not return any rows.
*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de aplicación de mutaciones

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

Propiedades

Nombre Descripción
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Creación por lotes

Un operador de creación por lotes agrupa por lotes sus filas de entrada en una secuencia. Por lo general, la operación se realiza como parte de una operación de aplicación distribuida cruzada. Las filas de entrada se pueden volver a ordenar durante la agrupación por lotes. La cantidad de filas de entrada que se agrupan por lotes en cada ejecución del operador de lotes varía.

Consulta al operador de aplicación distribuida cruzada para ver un ejemplo de un operador de creación por lotes en un plan de ejecución.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

Propiedades

Nombre Descripción
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Procesamiento

Un operador de procesamiento produce resultados leyendo sus filas de entrada y agregando una o más columnas adicionales que se calculan con expresiones escalares. Consulta el operador unir todo para ver un ejemplo del operador de procesamiento en un plan de ejecución.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

Propiedades

Nombre Descripción
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Estructura de procesamiento

Un operador de estructura de procesamiento crea una variable para una estructura que contiene campos destinados a cada una de las columnas de entrada.

En la siguiente consulta, se muestra este operador:

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"]]                   |
 +-----------+------------------------------------------------------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de estructura de procesamiento

En el plan de ejecución, el operador de subconsulta del arreglo recibe la entrada desde un operador de estructura de procesamiento. El operador de estructura de procesamiento crea una estructura a partir de las columnas SongName y SongGenre en la tabla Songs.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

Propiedades

Nombre Descripción
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Filtro

Un operador de filtro lee todas las filas de su entrada, aplica un predicado escalar en cada una y, luego, solo muestra las filas que satisfacen el predicado.

En la siguiente consulta, se muestra este operador:

SELECT s.lastname
FROM   (SELECT s.lastname
        FROM   singers AS s
        LIMIT  3) s
WHERE  s.lastname LIKE 'Rich%';

/*----------+
 | LastName |
 +----------+
 | Richards |
 +----------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de filtro

Spanner implementa el predicado para cantantes cuyo apellido comienza con Rich como un filtro. El filtro recibe la entrada de un análisis de índice y genera filas en las que LastName comienza con Rich.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Límite

Un operador de límite restringe la cantidad de filas que se muestran. El parámetro OFFSET opcional especifica la fila de inicio que se muestra. En situaciones distribuidas, el operador de límite se divide en un par local-global. Cada servidor remoto aplica el límite local para las filas de salida y, luego, muestra los resultados en el servidor raíz. El servidor raíz agrega las filas enviadas por los servidores remotos y, luego, aplica el límite global.

En la siguiente consulta, se muestra este operador:

SELECT s.songname
FROM   songs AS s
LIMIT  3;

/*----------------------+
 | SongName             |
 +----------------------+
 | Not About The Guitar |
 | The Second Time      |
 | Starting Again       |
 +----------------------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de límite

El límite local es el límite para cada servidor remoto. El servidor raíz agrega las filas de los servidores remotos y, luego, aplica el límite global.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Asignación de ID aleatorio

Un operador de asignación de ID aleatorio produce resultados leyendo sus filas de entrada y agregando un número aleatorio a cada fila. Funciona con un operador Filter o Sort para lograr métodos de muestreo. Los métodos de muestreo compatibles son Bernoulli y Reservoir.

Por ejemplo, la siguiente consulta usa el muestreo de Bernoulli con una tasa de muestreo del 10%.

SELECT s.songname
FROM   songs AS s TABLESAMPLE bernoulli (10 PERCENT);

/*----------------+
 | SongName       |
 +----------------+
 | Starting Again |
 +----------------*/

Dado que el resultado es una muestra, puede variar cada vez que la consulta se ejecute, aunque sea la misma.

Plan de ejecución del operador de muestra de Bernoulli

En este plan de ejecución, el operador de Random Id Assign recibe la entrada desde un operador de unión distribuida, el cual recibe la entrada desde un análisis del índice. El operador muestra las filas con ID aleatorios y el operador Filter aplica un predicado escalar en los ID aleatorios y muestra aproximadamente el 10% de las filas.

En el siguiente ejemplo, se usa Reservoir.

muestreo con una tasa de muestreo de 2 filas.

SELECT s.songname
FROM   songs AS s TABLESAMPLE reservoir (2 rows);

/*------------------------+
 | SongName               |
 +------------------------+
 | I Knew You Were Magic  |
 | The Second Time        |
 +------------------------*/

Dado que el resultado es una muestra, puede variar cada vez que la consulta se ejecute, aunque sea la misma.

Este es el plan de ejecución:

Plan de ejecución del operador de muestra de reservoir

En este plan de ejecución, el operador de Random Id Assign recibe la entrada desde un operador de unión distribuida, el cual recibe la entrada desde un análisis del índice. El operador devuelve las filas con IDs aleatorios y el operador Sort aplica el orden de clasificación en los IDs aleatorios y aplica LIMIT con 2 filas.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Unión de división local

Un operador de unión de división local busca divisiones de tablas almacenadas en el servidor local, ejecuta una subconsulta en cada división y, luego, crea una unión que combina todos los resultados.

En los planes de ejecución que analizan una tabla de ubicación, aparece una unión de división local. Las colocaciones pueden aumentar la cantidad de divisiones en una tabla, lo que hace que sea más eficiente analizar divisiones en lotes según sus ubicaciones de almacenamiento físico.

Por ejemplo, supongamos que la tabla Singers usa una clave de posición para particionar los datos de los cantantes:

CREATE TABLE Singers (
    SingerId INT64 NOT NULL,
    SingerName STRING(MAX) NOT NULL,
    ...
    Location STRING(MAX) NOT NULL PLACEMENT KEY
) PRIMARY KEY (SingerId);

Ahora, considera esta consulta:

SELECT BirthDate FROM Singers;

Este es el plan de ejecución:

Plan de ejecución del operador de unión de división local

La unión distribuida envía una subconsulta a cada lote de divisiones almacenadas físicamente juntas en el mismo servidor. En cada servidor, la unión de divisiones local encuentra las divisiones que almacenan datos de Singers, ejecuta la subconsulta en cada división y devuelve los resultados combinados. De esta manera, la unión distribuida y la unión de división local trabajan en conjunto para analizar de manera eficiente la tabla Singers. Sin una unión de división local, la unión distribuida enviaría una RPC por división en lugar de por lote de divisiones, lo que generaría viajes de ida y vuelta redundantes de RPC cuando hay más de una división por lote.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

DataBlockToRowAdapter

El optimizador de consultas de Spanner inserta automáticamente un operador DataBlockToRowAdapter entre un par de operadores que funcionan con diferentes métodos de ejecución. Su entrada es un operador que usa el método de ejecución orientado a lotes, y su salida se ingresa en un operador que se ejecuta con el método de ejecución orientado a filas. Para obtener más información, consulta Optimiza la ejecución de consultas.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

RowToDataBlockAdapter

El optimizador de consultas de Spanner inserta automáticamente un operador RowToDataBlockAdapter entre un par de operadores que funcionan con diferentes métodos de ejecución. Su entrada es un operador que usa el método de ejecución orientado a filas y su salida se ingresa en un operador que se ejecuta con el método de ejecución orientado a lotes. Para obtener más información, consulta Optimiza la ejecución de consultas.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Serialización de resultados

Un operador de serialización de resultados es un caso especial del operador de estructura de procesamiento que serializa cada fila del resultado final de la consulta para mostrarla al cliente.

En la siguiente consulta, se muestra este operador:

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"]]                              |
 | []                                                               |
 | []                                                               |
 +------------------------------------------------------------------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de serialización de resultados

El operador de serialización de resultados crea un resultado que contiene, para cada fila de la tabla Singers, un array de pares SongName y SongGenre para las canciones del cantante.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Ordenar

Un operador de orden lee las filas de entrada, las organiza por columnas y, luego, muestra los resultados ordenados.

En la siguiente consulta, se muestra este operador:

SELECT s.songgenre
FROM   songs AS s
ORDER  BY songgenre;

/*--------------------------+
 | SongGenre                |
 +--------------------------+
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 | CLASSICAL                |
 | COUNTRY                  |
 | ROCK                     |
 | ROCK                     |
 | ROCK                     |
 +--------------------------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de ordenamiento

En este plan de ejecución, el operador de orden recibe las filas de entrada desde un operador de unión distribuida, ordena las filas de entrada y muestra las filas ordenadas al operador de resultado de serialización.

A fin de limitar la cantidad de filas que se muestran, un operador de orden puede tener los parámetros LIMIT y OFFSET como opción. Para situaciones distribuidas, un operador de ordenamiento con un operador LIMIT o OFFSET se divide en un par local-global. Cada servidor remoto aplica el orden de clasificación y el límite o desplazamiento local para sus filas de entrada y, luego, muestra los resultados en el servidor raíz. El servidor raíz agrega las filas enviadas por los servidores remotos, las ordena y, luego, aplica el límite/desplazamiento global.

En la siguiente consulta, se muestra este operador:

SELECT s.songgenre
FROM   songs AS s
ORDER  BY songgenre
LIMIT  3;

/*--------------------------+
 | SongGenre                |
 +--------------------------+
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 +--------------------------*/

El plan de ejecución aparece de la siguiente manera:

Plan de ejecución del operador de orden con límites

En el plan de ejecución se muestra el límite local para los servidores remotos y el límite global para el servidor raíz.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

TVF

Un operador de función con valores de tabla produce resultados leyendo sus filas de entrada y aplicando la función especificada. La función podría implementar la asignación y devolver la misma cantidad de filas que la entrada. También puede ser un generador que devuelva más filas o un filtro que devuelva menos filas.

En la siguiente consulta, se muestra este operador:

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              |
 +-----------------------+--------------------------*/

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.

Entrada de la unión

Un operador de entrada de la unión le muestra los resultados al operador unir todo. Consulta el operador unir todo para ver un ejemplo del operador de entrada de unión en un plan de ejecución.

Propiedades y estadísticas de ejecución

Una propiedad de un operador describe un rasgo que se usa cuando se ejecuta el operador. Una estadística de ejecución es un valor recopilado durante la ejecución de la consulta para ayudarte a evaluar el rendimiento del operador.

El operador Filter tiene propiedades distintas adicionales.

Propiedades

Nombre Descripción
Condición Es un predicado que se aplica a cada fila de entrada. Cuando es verdadero, la fila se pasa al siguiente operador; cuando es falso, se descarta.
Método de ejecución En la ejecución de filas, el operador procesa una fila a la vez. En la ejecución por lotes, el operador procesa un lote de filas a la vez.

Estadísticas de ejecución

Nombre Descripción
Latencia Tiempo transcurrido de todas las ejecuciones realizadas en el operador.
Latencia acumulativa Es el tiempo total del operador actual y sus elementos subordinados.
Tiempo de CPU Es la suma del tiempo de CPU dedicado a ejecutar el operador.
Tiempo de CPU acumulativo Es el tiempo total de CPU dedicado a ejecutar el operador y sus elementos secundarios.
Tiempo de ejecución Es la cantidad total de tiempo que se tardó en ejecutar la consulta y procesar los resultados.
Filas mostradas Cantidad de filas que genera este operador
Cantidad de ejecuciones Es la cantidad de veces que se ejecutó el operador. Algunas ejecuciones se pueden realizar en paralelo.