DynamoDB 扫描辅助索引 (GSI)

aaa*_*210 4 amazon-web-services amazon-dynamodb secondary-indexes dynamodb-queries

我正在阅读有关 Scan 的文档,它的前言是:

Scan 操作通过访问表或二级索引中的每个项目来返回一个或多个项目和项目属性。1

这让我想知道,在什么情况下扫描二级索引会返回与普通表返回的一组不同的记录?

Scan 不支持 KeyConditionExpression,仅支持 FilterExpression - 这基本上发生在检索数据之后。

那么扫描 GSI 与表的含义是什么?

F_S*_*O_K 6

与基表相比,扫描可能会在 GSI 上返回不同的结果,因为 GSI 可能是稀疏的

GSI 具有与基表不同的键集。仅当项目上存在 GSI 密钥时,项目才会写入 GSI。否则,它会被省略,这意味着 GSI 中的数据可能比基表中的数据少。

假设基表具有分区属性A和排序键B。该表上的 GSI 具有分区属性C并且没有排序键。如果某个项目仅具有属性A和的值B,但没有C,则该项目将不会出现在 GSI 中。

编辑:我提供的链接中 AWS 使用的示例是 LSI。我在问题中使用了 GSI 的示例。原理是一样的。