Say I have one table with 50,000 items and the PK for each record is a unique number. Half of these items has a property "published" set to "1" and the other set to "0".
Most of the time I'll be retrieving individual items using the hash key, but sometimes I want to be able to get ALL the items where published = 1 or 0 (ideally paginated batches).
I could have a GSI with a PK on the "published" attribute but then I'd have 25,000 records per value, which I understand would be bad because PKs should be more unique than this (please let me know if I've understood this incorrectly).
I could have separate tables for published/unpublished but in my common use case of retrieving individual items, I'd rather not have to know in advance if the item was published or not (also Amazon says that well-designed apps usually have just one table).
Any advise or suggestions would be much appreciated.