Bird
Raised Fist0
DynamoDBquery~20 mins

Sparse index pattern in DynamoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Sparse Index Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Querying a sparse index for items with a specific attribute

You have a DynamoDB table with a sparse global secondary index (GSI) on attribute status. Only items with status set appear in the index.

What will the following query on the GSI return?

Query on GSI where status = 'active'
AItems without the status attribute will be returned.
BAll items in the table will be returned regardless of status.
COnly items where the attribute status equals 'active' will be returned.
DThe query will return an error because status is not a primary key.
Attempts:
2 left
💡 Hint

Remember, a sparse index only contains items where the indexed attribute exists.

🧠 Conceptual
intermediate
2:00remaining
Why use a sparse index in DynamoDB?

What is the main advantage of using a sparse index in DynamoDB?

AIt reduces storage and query costs by indexing only a subset of items.
BIt automatically backs up all table data.
CIt speeds up writes by indexing every attribute.
DIt encrypts data stored in the index.
Attempts:
2 left
💡 Hint

Think about what happens when only some items have the indexed attribute.

📝 Syntax
advanced
2:00remaining
Identify the correct DynamoDB GSI definition for a sparse index

Which of the following GSI definitions correctly creates a sparse index on attribute category?

A{ "IndexName": "CategoryIndex", "KeySchema": [{"AttributeName": "category", "KeyType": "HASH"}], "Projection": {"ProjectionType": "ALL"} }
B{ "IndexName": "CategoryIndex", "KeySchema": [{"AttributeName": "category", "KeyType": "HASH"}], "Projection": {"ProjectionType": "INCLUDE", "NonKeyAttributes": ["price"]} }
C{ "IndexName": "CategoryIndex", "KeySchema": [{"AttributeName": "category", "KeyType": "HASH"}], "Projection": {"ProjectionType": "KEYS_ONLY"} }
D{ "IndexName": "CategoryIndex", "KeySchema": [{"AttributeName": "category", "KeyType": "RANGE"}], "Projection": {"ProjectionType": "ALL"} }
Attempts:
2 left
💡 Hint

A sparse index requires the indexed attribute as the partition key (HASH).

❓ optimization
advanced
2:00remaining
Optimizing queries using sparse indexes

You want to efficiently query only items with a priority attribute set to 'high'. Which approach best uses a sparse index?

AScan the entire table and filter items where <code>priority</code> = 'high'.
BCreate a GSI with <code>priority</code> as a sort key and query all items filtering by 'high'.
CCreate a local secondary index on <code>priority</code> without changing the table schema.
DCreate a GSI with <code>priority</code> as the partition key and only items with <code>priority</code> set will appear in the index.
Attempts:
2 left
💡 Hint

Sparse indexes only include items with the indexed attribute as partition key.

🔧 Debug
expert
2:00remaining
Why does querying a sparse index return no results?

You created a sparse GSI on attribute region. You query the GSI for region = 'us-east-1' but get no results, even though items with that region exist in the table.

What is the most likely cause?

ASparse indexes do not support querying by partition key.
BThe items with region 'us-east-1' do not have the region attribute set exactly as the GSI expects.
CThe table does not have any items with region attribute at all.
DThe GSI was created with region as a sort key instead of partition key.
Attempts:
2 left
💡 Hint

Check if the attribute values exactly match the GSI key attribute.

Practice

(1/5)
1. What is the main benefit of using a sparse index pattern in DynamoDB?
easy
A. It indexes all items regardless of attributes, increasing storage.
B. It indexes only items with a specific attribute, making queries faster and cheaper.
C. It duplicates all data to another table for backup.
D. It automatically deletes items without a key attribute.

Solution

  1. Step 1: Understand sparse index purpose

    Sparse index only includes items that have the indexed attribute, skipping others.
  2. Step 2: Identify benefit of selective indexing

    This selective indexing reduces query cost and speeds up queries for that subset.
  3. Final Answer:

    It indexes only items with a specific attribute, making queries faster and cheaper. -> Option B
  4. Quick Check:

    Sparse index = selective fast queries [OK]
Hint: Sparse index targets only items with the attribute [OK]
Common Mistakes:
  • Thinking sparse index includes all items
  • Confusing sparse index with full table scan
  • Assuming sparse index duplicates data
2. Which of the following is the correct way to define a sparse index in DynamoDB?
easy
A. Create a Global Secondary Index (GSI) with a partition key only on items having the attribute.
B. Create a Local Secondary Index (LSI) on all items regardless of attribute presence.
C. Create a GSI with a partition key that is always null.
D. Create a GSI with a partition key that duplicates the primary key.

Solution

  1. Step 1: Identify sparse index creation method

    Sparse indexes use GSIs with keys only on items having the attribute.
  2. Step 2: Check options for correctness

    Create a Global Secondary Index (GSI) with a partition key only on items having the attribute. matches this method; others either index all items or use invalid keys.
  3. Final Answer:

    Create a Global Secondary Index (GSI) with a partition key only on items having the attribute. -> Option A
  4. Quick Check:

    Sparse index = GSI with selective keys [OK]
Hint: Sparse index uses GSI with keys only on some items [OK]
Common Mistakes:
  • Confusing LSI with sparse index
  • Using null keys in GSI partition key
  • Duplicating primary key in GSI
3. Given a DynamoDB table with items where only some have attribute status, and a sparse GSI on status, what will this query return?

Query on GSI where status = 'active'
medium
A. Only items without the status attribute.
B. All items in the table regardless of status.
C. All items in the table with status 'active'.
D. An error because status is not a primary key.

Solution

  1. Step 1: Understand sparse GSI query behavior

    The sparse GSI includes only items with the status attribute, so querying status='active' returns those items.
  2. Step 2: Eliminate incorrect options

    All items in the table regardless of status. is wrong because items without status are not in GSI; C is wrong because query targets status='active'; D is wrong because GSI keys can be queried.
  3. Final Answer:

    All items in the table with status 'active'. -> Option C
  4. Quick Check:

    Query sparse GSI = items with attribute value [OK]
Hint: Query sparse GSI returns only items with that attribute [OK]
Common Mistakes:
  • Expecting all table items in result
  • Thinking query fails without primary key
  • Confusing sparse index with full scan
4. You created a sparse GSI on attribute category, but your query returns no results even though items have category. What is a likely cause?
medium
A. Sparse indexes do not support queries.
B. The table has no items at all.
C. You queried the base table instead of the GSI.
D. The GSI partition key is not set to category.

Solution

  1. Step 1: Check GSI key configuration

    If the GSI partition key is not category, the index won't include those items properly.
  2. Step 2: Evaluate other options

    Table having no items is unlikely if items exist; querying base table returns items but not via GSI; sparse indexes do support queries.
  3. Final Answer:

    The GSI partition key is not set to category. -> Option D
  4. Quick Check:

    Wrong GSI key = no results [OK]
Hint: Check GSI partition key matches attribute queried [OK]
Common Mistakes:
  • Querying base table instead of GSI
  • Assuming sparse index can't be queried
  • Ignoring GSI key setup
5. You want to quickly find all orders with a deliveryDate attribute set, but most orders don't have this attribute. How can you use a sparse index pattern to optimize queries?
hard
A. Create a GSI with deliveryDate as the partition key; only orders with this attribute appear in the index.
B. Add deliveryDate as a sort key in the main table to speed up queries.
C. Create a GSI with a constant partition key for all items and deliveryDate as sort key.
D. Scan the entire table filtering on deliveryDate attribute.

Solution

  1. Step 1: Use sparse index with deliveryDate attribute

    Creating a GSI with deliveryDate as partition key includes only items having that attribute, making queries efficient.
  2. Step 2: Evaluate other options

    A constant partition key approach requires adding an extra attribute to all items, incurring write costs; main table sort key doesn't filter missing attributes; full table scan is inefficient.
  3. Final Answer:

    Create a GSI with deliveryDate as the partition key; only orders with this attribute appear in the index. -> Option A
  4. Quick Check:

    Sparse GSI on attribute = fast filtered queries [OK]
Hint: Sparse GSI on attribute filters only items having it [OK]
Common Mistakes:
  • Using scan instead of sparse index
  • Indexing all items losing sparsity
  • Misusing sort key for filtering
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard