Absence as a filter
An item appears in an index only if it has the index's key, so leaving the key off filters it out.
Why
An item is copied into a secondary index only if it has every attribute in that index's key. In this table only open tickets are given a gsi1pk, so only open tickets exist in the by-assignee index.
Scan the index, then the table. The index is a ready-made list of open work, with no filter expression and nothing wasted. Close a ticket by removing its gsi1pk and it drops out of the index on its own.
A sparse index uses absence as a global filter: only the items you care about ever appear in it.
Try it. Then change it.
Predict what each request will do. Run it, inspect the response, then change a value in the workbench and try again.
Scan the by-assignee index. Only OPEN tickets carry gsi1pk, so closed tickets are simply not here, even though they exist in the table.
Scan the base table for comparison: the closed tickets are here. The index holds fewer items than the table.
Built on this
- SaaS Multi-Tenant - What belongs to this tenant?
- Support Ticket Queue - Which ticket should we pick up next?
- Job Board - Which jobs are open right now?
- Commerce Capstone - How does the whole shop fit together?
Scan the by-assignee index. Only OPEN tickets carry gsi1pk, so closed tickets are simply not here, even though they exist in the table.
Choose an access pattern above, or build your own request. See what comes back and what it costs.