GSI分区键值唯一时,DynamoDB查询是否需要使用LastEvaluatedKey?
回答你的DynamoDB GSI查询问题
完全不需要多次请求或者处理LastEvaluatedKey,单次查询就足够搞定了。
原因很简单:你的GSI分区键是唯一的,这意味着每个分区键值只会对应表中的0条或1条数据。当你针对这个唯一的分区键发起Query请求时,DynamoDB会直接定位到对应的条目(如果存在),返回结果集的大小最多就是1——这种情况下,DynamoDB根本不会返回LastEvaluatedKey(因为没有更多数据可以分页了)。
甚至你都不需要额外设置Limit参数来限制返回数量,不过如果想让请求更明确、更高效,加上Limit=1也没问题,但本质上不影响结果。
举个实际操作的例子,假设你用AWS CLI发起查询:
aws dynamodb query \ --table-name YourTableName \ --index-name YourGSIName \ --key-condition-expression "GSIPartitionKey = :val" \ --expression-attribute-values '{":val": {"S": "your-unique-key-value"}}'
不管结果是0条还是1条,这个命令一次就能返回所有匹配的数据,不需要后续的分页请求。
总结一下:因为你的GSI分区键保证了唯一性,查询结果的数量是确定的0或1,分页逻辑在这里完全用不上,单次查询就足够获取目标数据。
内容的提问来源于stack exchange,提问作者Žilvinas Rudžionis
相关产品推荐
相关产品推荐

