לאופרטור אונארי יש צאצא יחיד שמייצג קשר.
האופרטורים הבאים הם אופרטורים אונריים:
- Aggregate
- החלת מוטציות
- יצירת קובץ אצווה
- Compute
- מבנה Compute
- DataBlockToRowAdapter
- מסנן
- מגבלה
- איגוד מקצועי מקומי מפוצל
- הקצאת מזהה אקראי
- 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 מיישם הצהרות SQL של GROUP BY ופונקציות aggregate (כמו 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.
פלח תוכנית הביצוע מופיע כך:

אופרטורים של צבירה יכולים להיות מבוססי-סטרימינג או מבוססי-גיבוב. תוכנית הביצוע הקודמת מציגה צבירה מבוססת-זרם. מצטברים מבוססי-זרם נקראים מקלט ממוין מראש (אם יש GROUP BY) ומחשבים את הקבוצה בלי חסימה. מצטברים מבוססי-גיבוב יוצרים טבלאות גיבוב כדי לשמור על מצטברים מצטברים של מספר שורות קלט בו-זמנית. מצטברים מבוססי-זרם מהירים יותר וצורכים פחות זיכרון ממצטברים מבוססי-גיבוב, אבל הם דורשים שהקלט יהיה ממוין (לפי עמודות מפתח או לפי אינדקסים משניים).
בתרחישים מבוזרים, האופרטור המצטבר מתפצל לצמד מקומי-גלובלי. כל שרת מרוחק מבצע את צבירת הנתונים המקומית בשורות הקלט שלו, ואז מחזיר את התוצאות לשרת הבסיס. שרת הבסיס מבצע את הצבירה הגלובלית.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
מאפיינים
| שם | תיאור |
|---|---|
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
החלת מוטציות
האופרטור 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) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
יצירת קבוצה
אופרטור create batch מאגד את שורות הקלט לרצף. פעולת יצירת חבילה מתרחשת בדרך כלל כחלק מפעולת החלה מבוזרת. אפשר לשנות את הסדר של שורות הקלט במהלך יצירת הבאצ'ים. מספר שורות הקלט שמצורפות לקבוצה בכל הפעלה של אופרטור הקבוצה משתנה.
דוגמה לאופרטור ליצירת אצווה בתוכנית ביצוע מופיעה במאמר בנושא אופרטור distributed cross apply.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
מאפיינים
| שם | תיאור |
|---|---|
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
Compute
אופרטור חישוב יוצר פלט על ידי קריאת שורות הקלט והוספה של עמודה אחת או יותר שמחושבות באמצעות ביטויים סקלריים. דוגמה לאופרטור חישוב בתוכנית ביצוע מופיעה במאמר בנושא האופרטור union all.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
מאפיינים
| שם | תיאור |
|---|---|
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
מבנה Compute
אופרטור 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"]] |
+-----------+------------------------------------------------------*/
תוכנית הביצוע מוצגת כך:

בתוכנית הביצוע, אופרטור שאילתת המשנה של המערך מקבל קלט מאופרטור של מבנה חישוב. אופרטור המבנה compute יוצר מבנה מהעמודות SongName ו-SongGenre בטבלה Songs.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
מאפיינים
| שם | תיאור |
|---|---|
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן 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 כמסנן. המסנן מקבל קלט מסריקת אינדקס ומחזיר שורות שבהן LastName מתחיל ב-Rich.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
הגבלה
אופרטור limit מגביל את מספר השורות שמוחזרות. פרמטר אופציונלי OFFSET
מציין את השורה הראשונה שתוחזר. בתרחישים מבוזרים, אופרטור הגבלת התוצאות מתפצל לצמד מקומי-גלובלי. כל שרת מרוחק מחיל את המגבלה המקומית על שורות הפלט שלו, ואז מחזיר את התוצאות לשרת הבסיס. השרת הראשי מצבר את השורות שנשלחות מהשרתים המרוחקים ואז מחיל את המגבלה הגלובלית.
השאילתה הבאה מדגימה את האופרטור הזה:
SELECT s.songname
FROM songs AS s
LIMIT 3;
/*----------------------+
| SongName |
+----------------------+
| Not About The Guitar |
| The Second Time |
| Starting Again |
+----------------------*/
תוכנית הביצוע מוצגת כך:

המגבלה המקומית היא המגבלה לכל שרת מרוחק. השרת הראשי מצבר את השורות מהשרתים המרוחקים ואז מחיל את המגבלה הגלובלית.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
הקצאת מזהה רנדומלי
אופרטור הקצאת מזהה אקראי יוצר פלט על ידי קריאת שורות הקלט והוספת מספר אקראי לכל שורה. היא פועלת עם האופרטורים Filter או Sort כדי להשיג שיטות דגימה. שיטות הדגימה הנתמכות הן ברנולי וReservoir.
לדוגמה, השאילתה הבאה משתמשת בדגימת ברנולי עם שיעור דגימה של 10 אחוזים.
SELECT s.songname
FROM songs AS s TABLESAMPLE bernoulli (10 PERCENT);
/*----------------+
| SongName |
+----------------+
| Starting Again |
+----------------*/
התוצאה היא מדגם, ולכן היא יכולה להיות שונה בכל הרצה של השאילתה, גם אם השאילתה זהה.

בתוכנית הביצוע הזו, האופרטור Random Id Assign מקבל את הקלט שלו מאופרטור של איחוד מבוזר, שמקבל את הקלט שלו מסריקת אינדקס. האופרטור מחזיר את השורות עם מזהים אקראיים, ואז האופרטור Filter מחיל פרדיקט סקלרי על המזהים האקראיים ומחזיר כ-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 מקבל את הקלט שלו מאופרטור של איחוד מבוזר, שמקבל את הקלט שלו מסריקת אינדקס. האופרטור מחזיר את השורות עם מזהים רנדומליים, ואז האופרטור Sort מחיל את סדר המיון על המזהים הרנדומליים ומחיל את LIMIT עם 2 שורות.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן 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;
זוהי תוכנית הביצוע:

הפונקציה distributed union שולחת שאילתת משנה לכל חבילה של פיצולים שמאוחסנים פיזית יחד באותו שרת. בכל שרת, האיחוד המקומי של הפיצולים מוצא פיצולים שמאחסנים נתוני Singers, מריץ את שאילתת המשנה על כל פיצול ומחזיר את התוצאות המשולבות. כך, הפעולות המפוצלות המקומיות והפעולות המפוצלות המבוזרות פועלות יחד כדי לסרוק את הטבלה Singers ביעילות. בלי איחוד מקומי מפוצל, האיחוד המפוצל ישלח RPC אחד לכל פיצול במקום לכל קבוצת פיצולים, וכתוצאה מכך יהיו נסיעות הלוך ושוב מיותרות של RPC אם יש יותר מפיצול אחד בכל קבוצה.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
DataBlockToRowAdapter
אופטימיזציית השאילתות של Spanner מוסיפה באופן אוטומטי אופרטור DataBlockToRowAdapter בין זוג אופרטורים שפועלים בשיטות ביצוע שונות. הקלט שלו הוא אופרטור שמשתמש בשיטת ההפעלה מבוססת-הקבוצות, והפלט שלו מוזן לאופרטור שמופעל בשיטת ההפעלה מבוססת-השורות. מידע נוסף זמין במאמר בנושא אופטימיזציה של ביצוע שאילתות.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
RowToDataBlockAdapter
אופטימיזציית השאילתות של Spanner מוסיפה באופן אוטומטי אופרטור RowToDataBlockAdapter בין זוג אופרטורים שפועלים בשיטות ביצוע שונות. הקלט שלה הוא אופרטור שמשתמש בשיטת ההפעלה מבוססת-השורה, והפלט שלה מוזן לאופרטור שמופעל בשיטת ההפעלה מבוססת-הקבוצה. מידע נוסף זמין במאמר בנושא אופטימיזציה של ביצוע שאילתות.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
סריאליזציה של התוצאה
האופרטור 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"]] |
| [] |
| [] |
+------------------------------------------------------------------*/
תוכנית הביצוע תיראה כך:

אופרטור התוצאה של הסריאליזציה יוצר תוצאה שמכילה, לכל שורה בטבלה Singers, מערך של זוגות SongName ו-SongGenre של השירים של הזמר.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
מיון
אופרטור sort קורא את שורות הקלט, מסדר אותן לפי עמודות ואז מחזיר את התוצאות הממוינות.
השאילתה הבאה מדגימה את האופרטור הזה:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
| BLUES |
| CLASSICAL |
| COUNTRY |
| ROCK |
| ROCK |
| ROCK |
+--------------------------*/
תוכנית הביצוע מוצגת כך:

בתוכנית הביצוע הזו, אופרטור המיון מקבל את שורות הקלט שלו מאופרטור distributed union, ממיין את שורות הקלט ומחזיר את השורות הממוינות לאופרטור serialize result.
כדי להגביל את מספר השורות שמוחזרות, אפשר להוסיף לאופרטור sort את הפרמטרים LIMIT ו-OFFSET. בתרחישים מבוזרים, אופרטור מיון עם האופרטור LIMIT או OFFSET מתפצל לצמד מקומי-גלובלי. כל שרת מרוחק מחיל את סדר המיון ואת המגבלה או ההיסט המקומיים על שורות הקלט שלו, ואז מחזיר את התוצאות לשרת הבסיס. שרת הבסיס (root) צובר את השורות שנשלחו על ידי השרתים המרוחקים, ממיין אותן ואז מיישם את המגבלה או ההיסט הגלובליים.
השאילתה הבאה מדגימה את האופרטור הזה:
SELECT s.songgenre
FROM songs AS s
ORDER BY songgenre
LIMIT 3;
/*--------------------------+
| SongGenre |
+--------------------------+
| BLUES |
| BLUES |
| BLUES |
+--------------------------*/
תוכנית הביצוע תיראה כך:

בתוכנית הביצוע מוצגת המגבלה המקומית של השרתים המרוחקים והמגבלה הגלובלית של שרת הבסיס.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן 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 |
+-----------------------+--------------------------*/
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |
קלט של איחוד
אופרטור union input מחזיר תוצאות לאופרטור union all. בדוגמה של אופרטור קלט של איחוד בתוכנית ביצוע אפשר לראות את האופרטור union all.
מאפיינים ונתונים סטטיסטיים של הרצה
מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.
לאופרטור Filter יש מאפיינים ייחודיים נוספים.מאפיינים
| שם | תיאור |
|---|---|
| תנאי | פרדיקט שמוחל על כל שורת קלט. אם הערך הוא True, השורה מועברת לאופרטור הבא. אם הערך הוא False, השורה מושמטת. |
| שיטת הביצוע | בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת. |
נתוני ביצוע
| שם | תיאור |
|---|---|
| זמן אחזור | הזמן שחלף מאז ההפעלה הראשונה של האופרטור. |
| זמן אחזור מצטבר | הזמן הכולל של האופרטור הנוכחי והצאצאים שלו. |
| זמן CPU (מעבד) | סכום הזמן שהמעבד השקיע בהרצת האופרטור. |
| זמן מצטבר של CPU (יחידת עיבוד מרכזית) | הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו. |
| זמן הביצוע | הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות. |
| שורות שהוחזרו | מספר השורות שהאופרטור הזה מוציא |
| מספר ההפעלות | מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל. |