用例会在 dynamodb 中执行完整扫描还是索引扫描?

Will the use case perform full or index scan in dynamodb?

我有一个 table 用户。

user_id   -> unique, partiton key
user_city -> primary sort key

查询会执行完整扫描还是会受益于排序键?

此外,如果我在 user_city 上使用 gsi 会产生什么结果?

pseudocode: fetch all user_id that have user_city="abc"

如果您的分区键是唯一的,则您不需要排序键,拥有排序键也没有任何好处。事实上,拥有一个是个坏主意,因为现在您的 user_id 不必是唯一的。此外,您还必须使用 Query() 来 return 仅包含 user_id 的用户信息。 GetItem() 需要 user_iduser_city

只需定义table,user_id为主键即可。 然后创建分区键为 user_city.

的 GSI

您甚至不需要 GSI 上的排序键,除非您希望数据按特定顺序 returned。也许 user_id 或者 user_name.