检查表的GSI是否至少有一项符合条件

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

我有一个

Workouts
表和一个索引
ByPlanIdIsCompletedAndCreatedBy

索引包含

planId
的分区键和具有组合字段
isComplete#createdBy
的排序键。

我为 DynamoDB 查询操作编写了以下参数,尝试检查锻炼中是否至少有一个项目符合以下

KeyConditionExpression
,目标是最大限度地减少读取消耗但绝不分页到下一页

{
  TableName: 'Workouts', 
  IndexName: 'ByPlanIdIsCompletedAndCreatedBy',
  KeyConditionExpression: 'planId = :planId begins_with(isComplete#createdBy, :sortKey)',
  ExpressionAttributeValues: {
    ':planId': '<some-id>',
    ':sortKey': 'TRUE#BBBB', 
  },
  Limit: 1
};

假设表中有一个满足

KeyConditionExpression
要求的项目,是否会出现这样的情况:我从查询中得到空结果,但得到了
LastEvaluatedKey
?如果是这样,为什么?我需要采取什么措施来避免分页,或者极大地减少需要分页的机会?

indexing amazon-dynamodb dynamodb-queries
1个回答
0
投票

简单的答案是,如果存在的话,您总是会得到一件物品。在极其罕见的边缘情况下,即使存在,也可能会出现您无法获得物品的情况,但这种情况极为罕见。

但是,Limit=1 将始终返回 LEK。

我会忽略边缘情况,因为它可能不会是您见过的情况,但如果您担心,请将您的限制更改为 2。如果 2 个项目落入 4KB 之内,则无需额外费用即可读取额外的项目。

© www.soinside.com 2019 - 2024. All rights reserved.