Bird
Raised Fist0
DynamoDBquery~5 mins

Index projection types (ALL, KEYS_ONLY, INCLUDE) in DynamoDB

Choose your learning style10 modes available
Introduction

Index projection types decide which data from your table is copied into an index. This helps you get data faster and use less storage.

When you want to speed up queries by having needed data in the index.
When you want to save storage space by copying only some attributes.
When you want to get only the keys from the table without extra data.
When you want to include specific extra attributes in the index for quick access.
When you want to reduce read costs by limiting data returned from the index.
Syntax
DynamoDB
Projection:
  ProjectionType: ALL | KEYS_ONLY | INCLUDE
  NonKeyAttributes: ["attribute1", "attribute2", ...]  # Only with INCLUDE

ALL copies all table attributes to the index.

KEYS_ONLY copies only the primary key attributes.

INCLUDE copies the primary keys plus specific extra attributes you list.

Examples
This copies every attribute from the table into the index.
DynamoDB
Projection:
  ProjectionType: ALL
This copies only the primary key attributes (partition key and sort key) into the index.
DynamoDB
Projection:
  ProjectionType: KEYS_ONLY
This copies the primary keys plus the "Name" and "Age" attributes into the index.
DynamoDB
Projection:
  ProjectionType: INCLUDE
  NonKeyAttributes: ["Name", "Age"]
Sample Program

This creates a table Users and a global secondary index EmailIndex that copies all attributes from the table.

DynamoDB
CREATE TABLE Users (
  UserID STRING,
  Email STRING,
  Name STRING,
  Age NUMBER,
  PRIMARY KEY (UserID)
);

CREATE GLOBAL SECONDARY INDEX EmailIndex ON Users(Email) 
  PROJECTION ALL;
OutputSuccess
Important Notes

Using ALL projection makes queries easier but uses more storage.

KEYS_ONLY projection saves space but you get only keys, so you may need to fetch full data separately.

INCLUDE projection is a good balance: you pick only needed extra attributes to include.

Summary

ALL copies all attributes to the index.

KEYS_ONLY copies only the keys.

INCLUDE copies keys plus specific extra attributes you choose.

Practice

(1/5)
1. Which DynamoDB index projection type copies all attributes from the base table to the index?
easy
A. ALL
B. KEYS_ONLY
C. INCLUDE
D. PARTIAL

Solution

  1. Step 1: Understand projection types

    ALL copies every attribute from the base table to the index.
  2. Step 2: Compare with other types

    KEYS_ONLY copies only keys; INCLUDE copies keys plus selected attributes.
  3. Final Answer:

    ALL -> Option A
  4. Quick Check:

    ALL = copies all attributes [OK]
Hint: ALL means every attribute is copied to the index [OK]
Common Mistakes:
  • Confusing INCLUDE with ALL
  • Thinking KEYS_ONLY copies all attributes
  • Assuming PARTIAL is a valid projection type
2. Which of the following is the correct way to specify a KEYS_ONLY projection in a DynamoDB index definition?
easy
A. "ProjectionType": "ALL"
B. "ProjectionType": "KEYS_ONLY"
C. "ProjectionType": "INCLUDE"
D. "ProjectionType": "KEYS"

Solution

  1. Step 1: Recall correct syntax for KEYS_ONLY

    The projection type must be exactly "KEYS_ONLY" in quotes.
  2. Step 2: Eliminate incorrect options

    ALL and INCLUDE are valid but not KEYS_ONLY; "KEYS" is invalid syntax.
  3. Final Answer:

    "ProjectionType": "KEYS_ONLY" -> Option B
  4. Quick Check:

    KEYS_ONLY syntax = "KEYS_ONLY" [OK]
Hint: Use exact string "KEYS_ONLY" for keys-only projection [OK]
Common Mistakes:
  • Using "KEYS" instead of "KEYS_ONLY"
  • Confusing INCLUDE with KEYS_ONLY syntax
  • Omitting quotes around projection type
3. Given a DynamoDB table with attributes id, name, age, and city, and a Global Secondary Index (GSI) with projection type INCLUDE and non-key attributes age and city, which attributes will be available in the index?
medium
A. id, age, and city
B. id, name, age, and city
C. Only age and city
D. Only id and name

Solution

  1. Step 1: Identify keys and included attributes

    Index always includes keys; INCLUDE adds specified non-key attributes.
  2. Step 2: Determine which attributes are keys

    Assuming id is the partition key, name is not a key.
  3. Step 3: Combine keys and included attributes

    Index has id (key), plus age and city (included).
  4. Final Answer:

    id, age, and city -> Option A
  5. Quick Check:

    INCLUDE = keys + chosen attributes [OK]
Hint: INCLUDE = keys plus only specified extra attributes [OK]
Common Mistakes:
  • Including non-key attributes not specified in INCLUDE
  • Assuming all attributes are included
  • Confusing keys with non-key attributes
4. You defined a DynamoDB index with projection type INCLUDE but forgot to specify any non-key attributes. What will happen when you try to create this index?
medium
A. The index will include keys plus all attributes by default.
B. The index will include only the keys, ignoring INCLUDE.
C. The index will include all attributes from the base table.
D. The index creation will fail with a validation error.

Solution

  1. Step 1: Understand INCLUDE projection requirements

    INCLUDE requires specifying at least one non-key attribute.
  2. Step 2: Check behavior when no attributes specified

    Omitting non-key attributes causes a validation error during index creation.
  3. Final Answer:

    The index creation will fail with a validation error. -> Option D
  4. Quick Check:

    INCLUDE needs attributes; missing causes error [OK]
Hint: INCLUDE must list attributes; empty list causes error [OK]
Common Mistakes:
  • Assuming INCLUDE defaults to ALL attributes
  • Thinking index silently defaults to KEYS_ONLY
  • Ignoring validation errors on index creation
5. You want to optimize a DynamoDB Global Secondary Index (GSI) to reduce storage costs but still need to query by email and retrieve phone and address attributes quickly. Which projection type should you choose?
hard
A. ALL
B. KEYS_ONLY
C. INCLUDE with phone and address
D. INCLUDE with email only

Solution

  1. Step 1: Understand storage cost vs attribute needs

    ALL copies all attributes but costs more storage; KEYS_ONLY copies only keys.
  2. Step 2: Identify needed attributes for queries

    You need email as key and phone, address for quick retrieval.
  3. Step 3: Choose INCLUDE projection with needed attributes

    INCLUDE lets you copy keys plus only phone and address, saving storage.
  4. Final Answer:

    INCLUDE with phone and address -> Option C
  5. Quick Check:

    INCLUDE = keys + needed attributes saves cost [OK]
Hint: Use INCLUDE to add only needed attributes, saving space [OK]
Common Mistakes:
  • Choosing ALL and increasing storage unnecessarily
  • Using KEYS_ONLY and missing needed attributes
  • Including only email but not phone or address
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