我有一个看起来像这样的 DynamoDB 表:
[id] [datetime] [name] [reasonForVisit] [__typename]
[id]
是表的简单主键
[__typename]
是对表中所有项目具有相同值的属性
桌子变得很大。我希望能够按范围 datetime
过滤数据。我有 2 个可快速实施的选项,但我不确定这是否会在成本方面产生很大影响。
- 扫描整个表,然后按日期时间过滤(因为 dynamodb 不允许在扫描前过滤)
- 通过固定的 __typename 分区创建 GSI(partitionKey: __typename, sortKey: datetime)和 QUERY,并按日期时间排序键过滤,例如 10/8/10 和 10/11/10 之间。
所以,我的问题是,由于我的分区键对于每个项目都是相同的,因此是一个大分区,我不确定当使用过滤器查询时,它是否仍然会导致读取整个表(类似于 SCAN)或它是否知道根据过滤器有效地开始读取项目?