Учитывая специфику, которую вы указали, я считаю, что вам нужен GSI с составным индексом. Ваша таблица будет выглядеть примерно так:
Partition Key GSI Partition GSI Sort
ID ID Type+Timestamp
При этом вы можете запросить GSI с помощью выражения фильтра, например:
#pk = :pk AND begins_with(#sk, :type)
Ваш ExpressionAttributeNames
должен отобразить #pk
к полю ID и #sk
к имени составного поля.
Ваш ExpressionAttributeValues
должен будет сопоставить :type
со значением, которое вы ищете («Читать» или «Непрочитано» ").
Поскольку вы фильтруете по типу (первая часть ключа сортировки), первая часть ключа сортировки всегда будет одинаковой, поэтому временная метка будет использоваться для упорядочения результатов. .