DynamoDB全球二级索引(GSI)能否返回基表未收录属性?
关于DynamoDB全球二级索引(GSI)属性返回的问题解答
你的理解是正确的:GSI无法返回未被其收录(投影)的基表属性,下面针对你的疑问展开说明:
- 核心规则:查询GSI时,DynamoDB只会从GSI自身的存储中读取数据,不会自动关联基表补充缺失属性。如果某属性没有被定义GSI时指定投影,查询结果里就不会包含该属性。
- 关于GSI的可用性:如果你的查询需要利用GSI的排序能力,但GSI缺少部分所需属性,GSI依然有用,但需要分两步操作:
- 先查询GSI,获取到对应的基表主键(注意:GSI默认会自动投影基表的分区键和排序键,无需额外配置);
- 用拿到的基表主键去查询基表,获取完整的所需属性。
- 投影选项补充:定义GSI时可以选择三种投影模式:
KEYS_ONLY:仅投影GSI的分区键、排序键,以及基表的主键;INCLUDE:在KEYS_ONLY的基础上,额外指定需要投影的属性;ALL:投影基表的所有属性(成本最高,但无需二次查询)。
内容的提问来源于stack exchange,提问作者Chayan Dutt
相关产品推荐
相关产品推荐

