accesspatterns.dev

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.

Tickets

These rows are real and already here. Running an operation against them downloads a DynamoDB-compatible engine, about 850 KB, and executes it in this tab.

Try an example

Scan the by-assignee index. Only OPEN tickets carry gsi1pk, so closed tickets are simply not here, even though they exist in the table.

pk(pk)
sk(sk)
title
status
gsi1pk
PROJECT#web
TICKET#101S
Fix the footerS
openS
USER#adaS
PROJECT#web
TICKET#102S
Dark modeS
openS
USER#graceS
PROJECT#web
TICKET#103S
Old redirectS
closedS
PROJECT#web
TICKET#104S
Mobile navS
openS
USER#adaS
PROJECT#web
TICKET#105S
FaviconS
closedS
PROJECT#web
TICKET#106S
Cookie bannerS
openS
USER#samS
PROJECT#api
TICKET#201S
Rate limitS
openS
USER#adaS
PROJECT#api
TICKET#202S
Retire v1S
closedS
PROJECT#api
TICKET#203S
PaginationS
openS
USER#graceS
PROJECT#api
TICKET#204S
Audit logS
closedS
PROJECT#api
TICKET#205S
WebhooksS
openS
USER#adaS
PROJECT#mobile
TICKET#301S
Push notificationsS
openS
USER#adaS
PROJECT#mobile
TICKET#302S
Crash on launchS
closedS
PROJECT#mobile
TICKET#303S
Offline modeS
openS
USER#samS
PROJECT#mobile
TICKET#304S
Biometric loginS
closedS
PROJECT#data
TICKET#401S
Nightly exportS
openS
USER#graceS
PROJECT#data
TICKET#402S
Schema driftS
closedS
PROJECT#data
TICKET#403S
Backfill ordersS
openS
USER#adaS
PROJECT#data
TICKET#404S
Dedupe usersS
closedS
PROJECT#data
TICKET#405S
Archive logsS
openS
USER#samS

Run an operation to see the raw engine response.

table Ticketskeys pk / skitems 20