能否将DynamoDB属性同时作为一个索引的partition key和另一个索引的sort key?
关于DynamoDB GSI键复用的问题解答
当然可以!DynamoDB完全允许你将同一个属性同时用作不同全局二级索引(GSI)的不同类型键——既可以是某一个GSI的分区键(Partition Key),也能作为另一个GSI的排序键(Sort Key)。
具体到你的场景
你提到的Events表以及两个GSI的设计是完全合法的:
- GSI
user_status:以user作为分区键、status作为排序键,这个索引能让你高效地按用户维度分组,再结合状态筛选相关事件; - GSI
status_created_at:以status作为分区键、created_at作为排序键,这个索引则支持你按状态维度聚合事件,还能按创建时间的顺序查询结果。
补充说明
每个GSI都有独立的键结构规则,只要单个GSI满足「必须指定一个分区键,可选搭配一个排序键」的要求,不同GSI之间的键选择没有互斥限制。你只需要根据实际的查询需求来设计索引即可,同时记得根据查询需要配置合适的投影属性(比如全投影、指定属性投影等),确保查询时能获取到所需的数据。
内容的提问来源于stack exchange,提问作者McGar
相关产品推荐
相关产品推荐

