我正在阅读有关Scan的文档,并且其开头带有:
“扫描”操作通过访问表或二级索引中的每个项目来返回一个或多个项目和项目属性。1
我很奇怪,在什么情况下扫描二级索引会返回普通表将返回的另一组记录?
扫描不支持KeyConditionExpression,仅支持FilterExpression,这基本上是在检索数据之后发生的。
那么扫描GSI和表格将意味着什么?
答案 0 :(得分:2)
与基表相比,扫描可能会在GSI上返回不同的结果,因为GSI可以为sparse。
GSI对基表设置了不同的密钥。如果项目上存在GSI密钥,则仅将项目写入GSI。否则将被忽略,这意味着GSI中的数据量可能少于基本表中的数据。
可以说基表具有分区属性A
和排序键B
。该表上的GSI具有分区属性C
,并且没有排序键。如果某项仅具有属性A
和B
的值,但没有C
的值,则该项将不会出现在GSI中。
编辑:我在提供的链接中使用AWS的示例是LSI。我以问题中的GSI为例。原理是一样的。