我在Dynamo Db中有一个表,有200万条记录。表将日期(yyyy-mm-dd
)作为分区键,将帐户I'd作为排序键。目前,我们使用boto3.client.dynamodb.query
来获取基于KeyConditionExpression
的数据,其中X
是日期。我想查询仅基于年份的记录?KeyConditionExpression
和Expression Attribute Values
应该是什么?
Dynamo Db中的示例行:
{"date": {"s" : "2022-04-29"},"account_id": {"s" :"6208378688923445"}}
这里date
是分区键,account_id
是排序键。我要查询所有年份为2022的记录。
一个查询只能操作一个分区键。如果要运行此查询,需要添加一个GSI,并将年份作为分区键。这有额外的写入和存储成本。如果您不需要经常运行这个查询,那么在应用程序层中扫描表并进行过滤可能会更便宜。如果您有200万条记录,每条记录为500字节,则扫描的成本小于0.02美元