我们有一些旧代码正在查询DynamoDB以查找匹配记录的列表。
下面的示例代码:
final DynamoDBQueryExpression<MyObject> queryExp = new DynamoDBQueryExpression<MyObject>()
.withHashKeyValues(myObject)
.withIndexName(indexName)
.withScanIndexForward(false)
.withConsistentRead(true)
.withLimit(rowsPerPage);
final PaginatedQueryList<MyObject> ruleInstanceList = dynamoDBMapper.query(MyObject.class, queryExp);
这是一个缓慢的操作,因为此查询将返回匹配的MyObject
列表,并且我注意到我们使用的所有方法是检查此列表是否为空。
所以我想做的就是简单地查询以找到第一个元素,甚至是不同类型的查询以简单地确保计数大于0,我需要验证的是记录是否存在,以便我可以减少延迟。
我的问题是,如何实现这一目标?
答案 0 :(得分:0)
getLimit()的文档指出:
请注意,在调用DynamoDBMapper.query时,如果需要检索DynamoDB的多个请求以检索整个结果集。设置此项将限制每个请求检索的项目数,而不是将检索的结果总数。使用DynamoDBMapper.queryPage从DynamoDB检索项目的单个页面。
要限制结果数量,可以使用queryPage()而不是query()。并将withLimit(1)
应用于您的查询表达式。