我有一张表中的分区键列表。
userId["123","456","235"]
我需要获得他们都共享的属性。例如“用户名”。
一次获得所有内容的最佳实践是什么?
知道我知道所有分区键后是否扫描我唯一的选择?
我知道排序键吗?是的,但仅仅是开始。所以我 不要以为我可以使用batchGetItem。
答案 0 :(得分:1)
仅当您不知道分区键时才进行扫描。因为您知道要搜索的分区键,所以可以通过多次Query操作来实现所需的行为。
查询使用指定的分区键搜索所有文档;您只能为每个请求查询一个分区键,因此您将需要多个查询,但这仍然比单个“扫描”操作有效得多。
如果您只查找带有以某些东西开头的排序键的文档,则可以将其与分区键一起包括在KeyConditionExpression
中。
例如,如果您只想返回其排序键以某个字符串开头的文档,则可以传递诸如userId = :user_id AND begins_with(#SortKey, :str)
之类的键条件表达式。
答案 1 :(得分:0)
您可以使用 PartQL SELECT 语句有效地实现结果。它允许使用 IN 运算符查询分区键数组并对其他属性应用附加条件,而不会导致全表扫描。
<块引用>确保SELECT语句不会产生全表 扫描,WHERE 子句条件必须指定一个分区键。使用 等式或 IN 运算符。