我正在阅读有关 Scan 的文档,它的开头是:
Scan 操作通过访问表或二级索引中的每个项目来返回一个或多个项目和项目属性。1
这让我想知道,在什么情况下扫描二级索引会返回与普通表不同的记录集?
Scan 不支持 KeyConditionExpression,仅支持 FilterExpression - 这基本上发生在检索数据之后。
那么扫描 GSI 与表的含义是什么?
我正在阅读有关 Scan 的文档,它的开头是:
Scan 操作通过访问表或二级索引中的每个项目来返回一个或多个项目和项目属性。1
这让我想知道,在什么情况下扫描二级索引会返回与普通表不同的记录集?
Scan 不支持 KeyConditionExpression,仅支持 FilterExpression - 这基本上发生在检索数据之后。
那么扫描 GSI 与表的含义是什么?
与基表相比,扫描可能会在 GSI 上返回不同的结果,因为 GSI 可能是稀疏的。
GSI 为基表设置了不同的键。仅当 GSI 密钥出现在项目上时,项目才会写入 GSI。否则将被省略,这意味着 GSI 中的数据可能比基表中的数据少。
假设基表具有分区属性A
和排序键B
。该表上的 GSI 具有分区属性C
且没有排序键。如果一个项目只有属性A
和的值B
,但没有C
,则该项目不会出现在 GSI 中。
编辑:我提供的链接中使用的示例 AWS 是 LSI。我使用了问题中的 GSI 示例。原理是一样的。