שאילתות משנה של מערכים

שאילתת משנה של מערך דומה לשאילתת משנה סקלרית, אבל מותר לשאילתת המשנה להשתמש ביותר משורת קלט אחת. מערכת Spanner ממירה את השורות שנצרכו למערך פלט סקלרי יחיד שמכיל רכיב אחד לכל שורת קלט שנצרכה.

סכימת מסד נתונים

השאילתות ותוכניות הביצוע בדף הזה מבוססות על סכימת מסד הנתונים הבאה:

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 a.albumid,
       array
       (
              select concertdate
              FROM   concerts
              WHERE  concerts.singerid = a.singerid)
FROM   albums AS a;

שאילתת המשנה היא:

SELECT concertdate
FROM   concerts
WHERE  concerts.singerid = a.singerid;

‫Spanner ממיר את התוצאות של שאילתת המשנה לכל AlbumId למערך של ConcertDate שורות ביחס לאותו AlbumId. תוכנית הביצוע מציגה שאילתת משנה של מערך, שמסומנת בתווית Array Subquery, מעל אופרטור איחוד מבוזר:

תוכנית ביצוע של אופרטור של שאילתת משנה למערך

מאפיינים ונתונים סטטיסטיים של הרצה

מאפיין של אופרטור מתאר תכונה שמשמשת כשהאופרטור מופעל. סטטיסטיקת ביצוע היא ערך שנאסף במהלך ביצוע השאילתה כדי לעזור לכם להעריך את הביצועים של האופרטור.

מאפיינים

שם תיאור
שיטת הביצוע בביצוע שורה, האופרטור מעבד שורה אחת בכל פעם. בביצוע באצ'ים, האופרטור מעבד באצ' של שורות בבת אחת.

נתוני ביצוע

שם תיאור
זמן אחזור הזמן שחלף מאז ההפעלה הראשונה של האופרטור.
זמן אחזור מצטבר הזמן הכולל של האופרטור הנוכחי והצאצאים שלו.
זמן CPU (מעבד) סכום הזמן שהמעבד השקיע בהרצת האופרטור.
זמן מצטבר של CPU (יחידת עיבוד מרכזית) הזמן הכולל של השימוש במעבד (CPU) במהלך ההפעלה של האופרטור ושל צאצאיו.
זמן הביצוע הזמן הכולל שנדרש להרצת השאילתה ולעיבוד התוצאות.
שורות שהוחזרו מספר השורות שהאופרטור הזה מוציא
מספר ההפעלות מספר הפעמים שהאופרטור הופעל. חלק מההרצות יכולות לפעול במקביל.