DynamoDB的二级索引并不直接包含实际的表行,而是包含从表中投影或复制到索引中的属性的子集,以及一个支持查询操作的替代键。这意味着,当您对二级索引执行查询时,如果查询所需的全部数据都包含在索引中,则不需要回表查询主表;但如果查询需要索引中不包含的字段,则需要进行回表查询,以获取完整的数据。
二级索引的工作原理
- 全局二级索引:其分区键和排序键可以与表上的分区键和排序键不同。全局二级索引被视为“全局”,因为对索引进行的查询可以跨表中所有分区的所有数据。
- 本地二级索引:其分区键必须与表的分区键相同,但排序键可以是任何其他属性。本地二级索引的含义是“本地”,表示本地二级索引的每个分区的范围都限定为具有相同分区键值的表分区。
二级索引与主表数据的关系
- 数据复制:在创建二级索引时,DynamoDB会自动将表中指定的属性复制到索引中。这意味着,索引中的数据是表中数据的子集,而不是表行的完整副本。
- 查询性能:通过使用二级索引,您可以提高查询性能,因为索引优化了数据的存储和访问方式。但是,如果查询需要索引中不包含的字段,可能会导致额外的回表查询,从而影响性能。