【发布时间】:2020-09-10 13:22:32
【问题描述】:
我正在尝试限制 DynamoDB 在查询表时返回的项目数。我只需要第一个匹配结果。
目标是减少所消耗的读取单元的数量,并努力保持代码的可读性,我使用context.Query 来查询二级本地索引并获得第一个匹配结果。
这是当前查询:
context.Query<TableEntry>(matchId, new DynamoDBOperationConfig { IndexName = "SecondaryId-index" })
这将返回所有 SecondaryId-index 匹配 matchId 的项目,但我只想要它匹配的第一个项目。
所以我尝试了这个:
context.Query<TableEntry>(matchId, new DynamoDBOperationConfig { IndexName = "SecondaryId-index" }).First()
据我了解context.Query(即使它很懒惰)仍将执行整个查询并至少读取第一页(使用.First() 枚举时),并且该页面将包含多个项目,因此会消耗更多的读取容量单位超出要求。
我找不到任何有关如何在 .NET 中仅使用 context.Query 将查询限制为第一个匹配项的文档。
这可能吗?如果不是,在保持代码最小/干净的同时,下一个最佳选择是什么?
【问题讨论】:
-
如果我发现是正确的,使用
context.Query- benfoster.io/blog/…时没有办法限制返回的对象数量 -
我无法回答您的问题,但我怀疑您的假设。 FIRST_VALUE() 是一个 SQL 函数。我希望 Microsoft 将其添加为您的查询的一部分,而不是将结果从您的数据库返回到 C# 空间。我并不是说我“知道”它会这样做,只是说它是可能的,而且 Query 通常对这些事情非常聪明。
标签: c# .net amazon-dynamodb limit dynamodb-queries