DynamoDB二级索引创建时是否需添加查询所需属性?
DynamoDB二级索引创建疑问解答
- 核心结论:创建基于Age的二级索引时,只需要指定分区键为Age,不需要强制把后续要查询的Contact、Star、Name这些属性都加入索引定义里。
- 具体解释:
- DynamoDB的二级索引(这里你要建的是全局二级索引GSI)会自动把原表的分区键(也就是Person表的Name)投影到索引中,所以Name属性默认就能通过索引查询到。
- 至于Contact和Star,你可以选择是否把它们设置为索引的投影属性:
- 如果设置为投影属性,查询时直接从索引里读取这些数据,速度快,不消耗额外的读取容量;
- 如果不设置,查询时DynamoDB会自动从原表(主表)里拉取这些数据,也就是所谓的"回表查询",这会多消耗一次读取容量,延迟也会稍高,但好处是索引的存储空间更小,维护成本低。
- 简单来说:索引的分区键(Age)是必须指定的,要查询的其他属性可加可不加,全看你对查询性能和存储成本的权衡。
内容的提问来源于stack exchange,提问作者Qasim
相关产品推荐
相关产品推荐

