N-항 연산자는 관계형 하위 요소가 2개 이상 있습니다. 다음 연산자가 N-항 연산자입니다.
데이터베이스 스키마
이 페이지의 쿼리 및 실행 계획은 다음 데이터베이스 스키마를 기반으로 합니다.
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);
다음과 같은 데이터 조작 언어(DML) 문을 사용하여 이러한 테이블에 데이터를 추가할 수 있습니다.
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");
전체 통합
전체 통합 연산자는 중복을 제거하지 않고 하위 항목의 모든 행 집합을 결합합니다. 전체 통합 연산자는 여러 서버에 분산된 통합 입력 연산자로부터 입력을 받습니다. 전체 통합 연산자에는 동일한 스키마를 갖는 입력이 필요합니다 (각 열에 대해 동일한 데이터 유형 집합).
다음 쿼리는 이 연산자를 보여줍니다.
SELECT 1 a,
2 b
UNION ALL
SELECT 3 a,
4 b
UNION ALL
SELECT 5 a,
6 b;
/*----+----+
| a | b |
+----+----+
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
+----+----*/
하위 요소의 행 유형은 정수 2개로 구성됩니다.
실행 계획은 다음과 같이 표시됩니다.

전체 통합 연산자는 입력 행을 결합하며, 이 예시에서는 결과를 결과 직렬화 연산자로 보냅니다.
하위 요소가 열 이름에 대해 다른 변수를 사용하더라도 각 열에 동일한 데이터 유형 집합이 사용되므로 다음 쿼리가 성공합니다.
SELECT 1 a,
2 b
UNION ALL
SELECT 3 c,
4 e;
하위 요소가 열에 다른 데이터 유형을 사용하므로 다음 쿼리는 실패합니다.
SELECT 1 a,
2 b
UNION ALL
SELECT 3 a,
'This is a string' b;
속성 및 실행 통계
연산자의 속성은 연산자가 실행될 때 사용되는 특성을 설명합니다. 실행 통계는 쿼리 실행 중에 수집되는 값으로, 연산자의 성능을 평가하는 데 도움이 됩니다.
속성
| 이름 | 설명 |
|---|---|
| 실행 메소드입니다. | 행 실행에서 연산자는 한 번에 한 행을 처리합니다. 일괄 실행에서 연산자는 한 번에 행 배치를 처리합니다. |
실행 통계
| 이름 | 설명 |
|---|---|
| 지연 시간 | 연산자에서 실행된 모든 실행의 경과 시간입니다. |
| 누적 지연 시간 | 현재 연산자와 그 하위 요소의 총 시간입니다. |
| CPU 시간 | 연산자를 실행하는 데 사용된 CPU 시간의 합계입니다. |
| 누적 CPU 시간 | 연산자와 그 하위 요소를 실행하는 데 소요된 총 CPU 시간입니다. |
| 실행 시간 | 쿼리를 실행하고 결과를 처리하는 데 걸린 총시간입니다. |
| 반환된 행 | 이 연산자가 출력한 행 수 |
| 실행 횟수 | 연산자가 실행된 횟수입니다. 일부 실행은 동시에 실행할 수 있습니다. |