Un operador unario tiene un solo operador secundario relacional.
Los siguientes son operadores unarios:
- Agregación
- Aplicación de mutaciones
- Creación por lotes
- datos
- Estructura de procesamiento
- DataBlockToRowAdapter
- Filtro
- Límite
- Unión de división local
- Asignación de ID aleatorio
- RowToDataBlockAdapter
- Serialización de resultados
- Orden
- TVF
- Entrada de la unión
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:

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:

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:

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:

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:

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.

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:

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:

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:

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:

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:

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