- A
Change the primary key to (WarehouseId, ProductId) so rows are interleaved by warehouse.
Why wrong: Changing the primary key would affect all existing queries and insert patterns, and it does not guarantee covering the SUM column.
- B
Create a materialized view that pre-aggregates stock by warehouse.
Why wrong: Cloud Spanner does not support materialized views; this feature is not available.
- C
Modify the index to INCLUDE StockLevel: CREATE INDEX InventoryByWarehouse ON Inventory (WarehouseId) STORING (StockLevel).
The STORING clause adds StockLevel to the index, making it a covering index for the query, so Cloud Spanner can return results from the index alone without scanning the base table.
- D
Add a STORED GENERATED column for total stock per warehouse.
Why wrong: A generated column does not pre-aggregate data; it only computes a value per row and would not help with SUM aggregation.
PCDE Design and implement database schemas Practice Question
This PCDE practice question tests your understanding of design and implement database schemas. Read the scenario carefully and evaluate each option against the stated constraints before committing to an answer. After answering, compare your reasoning against the explanation and wrong-answer breakdown below. Once you have made your selection, read the full explanation to reinforce the concept and understand why each distractor is designed to mislead on exam day.
A retail company uses Cloud Spanner to store product inventory data. The table structure is:
CREATE TABLE Inventory ( ProductId INT64 NOT NULL, WarehouseId INT64 NOT NULL, StockLevel INT64 NOT NULL, LastUpdated TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true) ) PRIMARY KEY (ProductId, WarehouseId);
The application frequently runs the query: SELECT ProductId, SUM(StockLevel) AS TotalStock FROM Inventory WHERE WarehouseId = 123 GROUP BY ProductId. The query is slow and scans many rows. The index used is:
CREATE INDEX InventoryByWarehouse ON Inventory (WarehouseId);
What is the most effective schema change to improve query performance?
Clue words in this question
Noticing these words before you look at the options changes how you read each choice.
Clue:
"NOT"Why it matters: Negative qualifier — you are looking for the one option that does NOT apply. Most options will be true; only one is false for this scenario.
Clue:
"primary"Why it matters: Asks for the main purpose or function, not a secondary benefit. Eliminate answers that describe side-effects or partial functions.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
Modify the index to INCLUDE StockLevel: CREATE INDEX InventoryByWarehouse ON Inventory (WarehouseId) STORING (StockLevel).
Option C is correct because the query needs to read StockLevel for every row matching WarehouseId, but the existing index only covers WarehouseId, forcing a back-join to the base table. By using STORING (StockLevel), the index becomes a covering index that includes the StockLevel column, eliminating the need for the back-join and reducing the number of rows scanned to only those matching the warehouse filter.
Key principle: Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Change the primary key to (WarehouseId, ProductId) so rows are interleaved by warehouse.
Why it's wrong here
Changing the primary key would affect all existing queries and insert patterns, and it does not guarantee covering the SUM column.
- ✗
Create a materialized view that pre-aggregates stock by warehouse.
Why it's wrong here
Cloud Spanner does not support materialized views; this feature is not available.
- ✓
Modify the index to INCLUDE StockLevel: CREATE INDEX InventoryByWarehouse ON Inventory (WarehouseId) STORING (StockLevel).
Why this is correct
The STORING clause adds StockLevel to the index, making it a covering index for the query, so Cloud Spanner can return results from the index alone without scanning the base table.
Clue confirmation
The clue words "NOT", "primary" in the question point toward this answer.
Related concept
Read the scenario before looking for a memorised answer.
- ✗
Add a STORED GENERATED column for total stock per warehouse.
Why it's wrong here
A generated column does not pre-aggregate data; it only computes a value per row and would not help with SUM aggregation.
Common exam traps
Common exam trap: answer the scenario, not the keyword
The trap here is that candidates often think changing the primary key order (Option A) will physically colocate data and speed up the query, but in Cloud Spanner, primary key order does not eliminate the need to scan all rows for a given WarehouseId, and the query still requires aggregation across ProductId groups, so a covering index is the correct optimization.
Detailed technical explanation
How to think about this question
In Cloud Spanner, a covering index with STORING (or INCLUDE in other databases) stores the specified columns alongside the index key, so the index itself contains all data needed for the query. This avoids the costly back-join to the base table, which would otherwise require a lookup for each matching row. Under the hood, Spanner's distributed storage means that index scans can be parallelized across splits, but without covering columns, each index entry triggers a separate point lookup, increasing latency and resource consumption.
KKey Concepts to Remember
- Read the scenario before looking for a memorised answer.
- Find the constraint that changes the correct option.
- Eliminate answers that are true in general but not in this case.
TExam Day Tips
- Watch for words such as best, first, most likely and least administrative effort.
- Review why wrong options are wrong, not only why the correct option is correct.
Key takeaway
Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Real-world example
How this comes up in practice
A cloud solutions architect for a retail company is evaluating services for a new workload. The correct answer here reflects best practice for the specific scenario described — not a general cloud recommendation. Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option. Cloud exam questions reward reading the constraint carefully: the same technology can be right or wrong depending on the use case.
What to study next
Got this wrong? Here's your next step.
Identify which exam domain this question belongs to, review the core concept, then practise similar questions from the same domain.
- →
Design and implement database schemas — study guide chapter
Learn the concepts, then practise the questions
- →
Design and implement database schemas practice questions
Targeted practice on this topic area only
- →
All PCDE questions
503 questions across all exam domains
- →
Google Professional Cloud Database Engineer study guide
Full concept coverage aligned to exam objectives
- →
PCDE practice test guide
How to use practice tests most effectively before exam day
Related practice questions
Related PCDE practice-question pages
Use these pages to review the topic behind this question. This is how one missed question becomes focused revision.
Plan and manage database infrastructure practice questions
Practise PCDE questions linked to Plan and manage database infrastructure.
Define data structures and implement SQL for Business Intelligence practice questions
Practise PCDE questions linked to Define data structures and implement SQL for Business Intelligence.
Design and implement database schemas practice questions
Practise PCDE questions linked to Design and implement database schemas.
Monitor and optimize database performance practice questions
Practise PCDE questions linked to Monitor and optimize database performance.
PCDE fundamentals practice questions
Practise PCDE questions linked to PCDE fundamentals.
PCDE scenario practice questions
Practise PCDE questions linked to PCDE scenario.
PCDE troubleshooting practice questions
Practise PCDE questions linked to PCDE troubleshooting.
Practice this exam
Start a free PCDE practice session
Short sessions build daily habit. Longer sessions build exam-day stamina. Try a timed session to simulate real conditions.
FAQ
Questions learners often ask
What does this PCDE question test?
Design and implement database schemas — This question tests Design and implement database schemas — Read the scenario before looking for a memorised answer..
What is the correct answer to this question?
The correct answer is: Modify the index to INCLUDE StockLevel: CREATE INDEX InventoryByWarehouse ON Inventory (WarehouseId) STORING (StockLevel). — Option C is correct because the query needs to read StockLevel for every row matching WarehouseId, but the existing index only covers WarehouseId, forcing a back-join to the base table. By using STORING (StockLevel), the index becomes a covering index that includes the StockLevel column, eliminating the need for the back-join and reducing the number of rows scanned to only those matching the warehouse filter.
What should I do if I get this PCDE question wrong?
Identify which exam domain this question belongs to, review the core concept, then practise similar questions from the same domain.
Are there clue words in this question I should notice?
Yes — watch for: "NOT", "primary". Negative qualifier — you are looking for the one option that does NOT apply. Most options will be true; only one is false for this scenario.
What is the key concept behind this question?
Read the scenario before looking for a memorised answer.
About these practice questions
Courseiva creates original exam-style practice questions with explanations and wrong-answer analysis. It does not publish real exam questions, exam dumps, or protected exam content. Learn why practice questions differ from exam dumps →
Last reviewed: Jun 11, 2026
This PCDE practice question is part of Courseiva's free Google Cloud certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the PCDE exam.
Question Discussion
Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.
Sign in to join the discussion.