Query:
- Uses primary key or index keys
- Retrieves specific items efficiently
- Lower cost and better performance
- Can use filter expressions for additional filtering
Scan:
- Examines every item in table/index
- Expensive and slow for large tables
- Uses filter expressions to return subset
- Should be avoided in production for large datasets
# Query example
response = table.query(
KeyConditionExpression=Key('user_id').eq('123')
)
# Scan example
response = table.scan(
FilterExpression=Attr('age').gt(21)
)