[英]How can I DynamoDB Table with Partition Key on apply between condition?
sql 这样查询:
select * from table where Date BETWEEN '2020-07-01' AND '2020-08-18'
OR
select * from table where Date >= '2020-07-01' AND Date <= '2020-08-18'
我如何使用分区键在 DynamoDB 中执行上述条件。
如果您使用的是分区键(而不是排序键),那么您有 2 个选择。
您要么使用支持BETWEEN
的ScanFilter的 Scan,要么需要分别针对每个分区键执行查询。
AWS 在其文档中发布了一个使用扫描的示例PHP。
通常,您会尽量避免使用 Scans,因为从资源的角度来看,它的效率非常低,并且在尝试检索结果时会消耗大量的RCU
,而 Query 效率更高。
这是因为扫描操作是在所有分区上执行的,并且在检索数据后应用了任何过滤器,而查询操作是在单个分区上执行的,并且在检索数据之前应用了过滤器。
如果这对您来说是个问题,您可以考虑重构 DynamoDB 表以允许使用更好的分区键并将数据范围用作表的排序键。 或者,您可以在表上创建一个GSI ,让所有数据共享一个分区键,并将日期范围用作排序键。 这将允许您使用查询条件过滤排序键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.