哪种方法可以更有效地获取 dynamodb 项目的子集?

问题描述 投票:0回答:1

我有一个 dynamodb 表和该表所有主键的列表。

示例项目可能是“foo_12424”的 PK 和“bar_32456”的 SK

我想获取所有带有 sk 以前缀“bar_3”开头的项目

我可以考虑通过两种方式做到这一点:

  1. 只需扫描dynamodb表,条件是sk必须以bar_3开头
  2. 循环遍历所有pk的列表并查询以bar_3开头的SK并将子集返回到列表中。

根据我的理解,扫描效率非常低,我的想法是查询排序键会更有效,因为它不会遍历所有项目,但我想知道循环所有主键的开销是否会抵消这一优势?

amazon-dynamodb boto3
1个回答
0
投票

这里本质上你需要的是基于 SK 的全局排序顺序。为此,拥有一个具有公共属性作为 PK 的索引通常很有用,然后您的请求就会变得高效且快速。

您可以从博客文章这里了解更多信息。

GSI_PK SK PK
1 bar_32456 foo_12424
1 bar_33453 foo_12111
1 bar_34344 foo_12222
© www.soinside.com 2019 - 2024. All rights reserved.