「unary」運算子包含單一相關子項。
以下運算子屬於 unary 運算子:
- 匯總
- 套用變異
- 建立批次
- 運算
- 運算結構體
- DataBlockToRowAdapter
- 篩選器
- 限制
- Local split union
- 隨機指派 ID
- RowToDataBlockAdapter
- Serialize result
- 排序
- TVF
- 聯集輸入
資料庫結構定義
本頁的查詢和執行計畫是根據下列資料庫結構定義:
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");
匯總
「aggregate」運算子會實作 GROUP BY SQL 陳述式並匯總功能 (例如 COUNT)。aggregate 運算子的輸入會以索引鍵資料欄有邏輯地分區為多個群組 (若沒有 GROUP BY,則為單一群組)。針對每個群組,系統會運算零或多個匯總。
下列查詢會示範這個運算子:
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 |
+----------+---------+-------*/
查詢會以 SingerId 分組,並且執行 AVG 匯總與 COUNT 匯總。
執行計畫區隔如下所示:

Aggregate 運算子分成「串流型」或「雜湊型」兩類。先前的執行計畫顯示的是串流型匯總。串流型匯總會讀取預先排序的輸入 (若有 GROUP BY),並在未封鎖的情況下運算群組。雜湊型匯總會建立雜湊表,以同時維護多個輸入列的遞增匯總。串流型匯總的執行速度比雜湊型匯總更快,也消耗較少的記憶體,但需要使用經過排序的輸入 (依索引鍵欄或次要索引排序)。
在分散式情境中,匯總運算子會分成區域/全域組。每個遠端伺服器會在其輸入列執行本機匯總,然後將結果傳回根伺服器,讓根伺服器執行全域匯總。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
屬性
| 名稱 | 說明 |
|---|---|
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
Apply mutations
「apply mutations」運算子將來自於資料操縱語言 (DML) 陳述式的變異套用到資料表。這是 DML 陳述式查詢計畫的頂層運算子。
下列查詢會示範這個運算子:
DELETE FROM singers
WHERE firstname = 'Alice';
/*
4 rows deleted This statement deleted 4 rows and did not return any rows.
*/
執行計畫如下所示:

屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
屬性
| 名稱 | 說明 |
|---|---|
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
建立批次
「create batch」運算子會將輸入列分批,做成序列。建立批次作業通常是分散式 cross apply 作業的一部分。輸入列可以在批次作業期間重新排序。每次執行批次運算子,進行批次的輸入列數量會有所不同。
請參閱分散式 cross apply 運算子,取得執行計畫中 create batch 運算子的範例。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
屬性
| 名稱 | 說明 |
|---|---|
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
運算
「compute」運算子會讀取輸入列,並新增一或多個透過純量陳述式運算的額外資料欄來產生輸出。請參閱 union all 運算子,瞭解執行計畫中 compute 運算子的範例。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
屬性
| 名稱 | 說明 |
|---|---|
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
Compute struct
「compute struct」運算子會為結構建立變數,包含每個輸入資料欄的欄位。
下列查詢會示範這個運算子:
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"]] |
+-----------+------------------------------------------------------*/
執行計畫如下所示:

在此執行計畫中,array subquery 運算子會從 compute struct 運算子接收輸入。compute struct 運算子會從 Songs 資料表中的 SongName 和 SongGenre 資料欄建立結構。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
屬性
| 名稱 | 說明 |
|---|---|
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
篩選器
「filter」運算子會讀取輸入的所有資料列,在每一列上套用純量述詞,然後只傳回滿足述詞的資料列。
下列查詢會示範這個運算子:
SELECT s.lastname
FROM (SELECT s.lastname
FROM singers AS s
LIMIT 3) s
WHERE s.lastname LIKE 'Rich%';
/*----------+
| LastName |
+----------+
| Richards |
+----------*/
執行計畫如下所示:

Spanner 會將以 Rich 開頭的歌手姓氏的述詞做為篩選器。篩選器會從索引 scan 接收輸入,並輸出 LastName 開頭為 Rich 的資料列。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
限制
「limit」運算子會限制傳回的資料列數。選擇性的 OFFSET 參數會指定要傳回的起始列。在分散式情境中,limit 運算子會分成區域/全域組。每個遠端伺服器會套用輸出資料列的本機限制,然後將結果傳回根伺服器。根伺服器會匯總遠端伺服器傳送的資料列,然後套用全域限制。
下列查詢會示範這個運算子:
SELECT s.songname
FROM songs AS s
LIMIT 3;
/*----------------------+
| SongName |
+----------------------+
| Not About The Guitar |
| The Second Time |
| Starting Again |
+----------------------*/
執行計畫如下所示:

每個遠端伺服器的限制都會採用本機限制。根伺服器會從遠端伺服器匯總資料列,然後套用全域限制。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
指派隨機 ID
「random ID assign」運算子會讀取輸入列,並在每個資料列中新增隨機數字,藉此產生輸出。可搭配 Filter 或 Sort 運算子,支援的取樣方法為 Bernoulli 和 Reservoir。
舉例來說,下列查詢使用 Bernoulli 取樣,取樣率為 10%。
SELECT s.songname
FROM songs AS s TABLESAMPLE bernoulli (10 PERCENT);
/*----------------+
| SongName |
+----------------+
| Starting Again |
+----------------*/
由於結果是樣本,即使查詢相同,每次執行查詢的結果可能都會不同。

在此執行計畫中,Random Id Assign 運算子會從 distributed union 運算子接收輸入,而該運算子會從 index scan 接收輸入。運算子會傳回含有隨機 ID 的資料列,然後 Filter 運算子會對隨機 ID 套用純量述詞,並傳回約 10% 的資料列。
以下範例使用 Reservoir
取樣率為 2 列的取樣。
SELECT s.songname
FROM songs AS s TABLESAMPLE reservoir (2 rows);
/*------------------------+
| SongName |
+------------------------+
| I Knew You Were Magic |
| The Second Time |
+------------------------*/
由於結果是樣本,即使查詢相同,每次執行查詢的結果可能都會不同。
以下為執行計畫:

在此執行計畫中,Random Id Assign 運算子會從 distributed union 運算子接收輸入,而該運算子會從 index scan 接收輸入。運算子會傳回含有隨機 ID 的資料列,然後 Sort 運算子會對隨機 ID 套用排序順序,並套用 LIMIT (2 個資料列)。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
本機分割聯集
「local split union」運算子會找出儲存在本機伺服器的資料表分割,對每個分割執行子查詢,然後建立聯集來合併所有結果。
執行計畫會掃描位置資料表,並顯示本機分割聯集。放置位置可以增加資料表中的分割數,讓您根據實體儲存位置,更有效率地批次掃描分割。
舉例來說,假設 Singers 資料表使用放置位置鍵來分割歌手資料:
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(MAX) NOT NULL,
...
Location STRING(MAX) NOT NULL PLACEMENT KEY
) PRIMARY KEY (SingerId);
現在,請思考這項查詢:
SELECT BirthDate FROM Singers;
以下為執行計畫:

分散式聯集會將子查詢傳送至每個批次的分割,這些分割會實際儲存在同一部伺服器中。在每個伺服器上,本機分割聯集會找出儲存 Singers 資料的分割,在每個分割上執行子查詢,然後傳回合併結果。這樣一來,分散式聯集和本機分割聯集就能共同運作,有效率地掃描 Singers 資料表。如果沒有本機分割聯集,distributed union 會針對每個分割傳送一個 RPC,而不是每個分割批次傳送一個 RPC,因此當每個批次有多個分割時,會導致多餘的 RPC 往返。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
DataBlockToRowAdapter
Spanner 查詢最佳化工具會在以不同執行方法運作的一對運算子之間,自動插入 DataBlockToRowAdapter 運算子。輸入內容是使用批次導向執行方法的運算子,輸出內容則會饋送至以列導向執行方法執行的運算子。詳情請參閱「最佳化查詢執行作業」。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
RowToDataBlockAdapter
Spanner 查詢最佳化工具會在以不同執行方法運作的一對運算子之間,自動插入 RowToDataBlockAdapter 運算子。輸入內容是使用以列為導向的執行方法,輸出內容則會饋送至以批次為導向的執行方法。詳情請參閱「最佳化查詢執行作業」。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
Serialize result
「serialize result」運算子是 compute struct 運算子的特殊案例,它會序列化查詢最終結果的每個資料列,以傳回用戶端。
下列查詢會示範這個運算子:
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"]] |
| [] |
| [] |
+------------------------------------------------------------------*/
執行計畫如下所示:

serialize result 運算子會為 Singers 資料表中的每個資料列建立結果,其中包含歌手歌曲的 SongName 和 SongGenre 配對陣列。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
排序
「sort」運算子會讀取輸入列、依資料欄排序資料列,然後傳回排序的結果。
下列查詢會示範這個運算子:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
| BLUES |
| CLASSICAL |
| COUNTRY |
| ROCK |
| ROCK |
| ROCK |
+--------------------------*/
執行計畫如下所示:

在此執行計畫中,sort 運算子會從 distributed union 運算子接收輸入列、將輸入列排序,然後將已排序的資料列傳回 serialize result 運算子。
若要限制傳回的資料列數,可選擇在 sort 運算子包含 LIMIT 和 OFFSET 參數。針對分散式的情境,系統會將具備 LIMIT 或 OFFSET 的 sort 運算子分成本機/全域組。每個遠端伺服器都會套用輸入列的排序順序和本機限制/偏移,然後將結果傳回根伺服器。根伺服器會匯總遠端伺服器傳送的資料列,在排序後套用全域限制/偏移。
下列查詢會示範這個運算子:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre
LIMIT 3;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
+--------------------------*/
執行計畫如下所示:

此執行計畫顯示遠端伺服器的本機限制,以及根伺服器的全域限制。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
TVF
「資料表值函式」運算子會讀取輸入列,並套用指定函式來產生輸出。函式可能會實作對應,並傳回與輸入內容相同數量的資料列。也可以是傳回更多資料列的產生器,或是傳回較少資料列的篩選器。
下列查詢會示範這個運算子:
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 |
+-----------------------+--------------------------*/
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |
Union input
「union input」運算子會將結果傳回 union all 運算子。如需在執行計畫中使用 union input 運算子的範例,請參閱 union all 運算子。
屬性和執行作業統計資料
運算子的屬性會說明運算子執行時使用的特徵。執行統計資料是在查詢執行期間收集的值,可協助您評估運算子的效能。
「篩選」運算子具有其他相異屬性。屬性
| 名稱 | 說明 |
|---|---|
| 條件 | 套用至每個輸入資料列的述詞。如果為 true,資料列會傳遞至下一個運算子;如果為 false,資料列會遭到捨棄。 |
| 執行方法 | 在列執行中,運算子一次處理一列。 在批次執行中,運算子會一次處理一批資料列。 |
執行作業統計資料
| 名稱 | 說明 |
|---|---|
| 延遲時間 | 運算子中所有執行作業的經過時間。 |
| 累計延遲時間 | 目前運算子及其後代的總時間。 |
| CPU 作業時間 | 執行運算子所耗費的 CPU 作業時間總和。 |
| 累計 CPU 作業時間 | 執行運算子及其後代所花費的 CPU 作業時間總計。 |
| 執行時間 | 執行查詢及處理結果所花費的總時間。 |
| 傳回的資料列數 | 這個運算子輸出的資料列數 |
| 執行作業數量 | 運算子的執行次數。部分執行作業可以平行執行。 |