You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DynamoDB表获取唯一主键列表?验证GSI方案可行性

用GSI获取DynamoDB唯一主键列表的方案可行性

这个方案是可行的,核心是通过缩小扫描的数据量来提升效率,具体逻辑和注意事项如下:

  • 为什么此方案有效:
    原表中同一主键(PK)对应多个排序键条目,直接Scan原表会遍历所有完整条目,耗时且占用大量读取容量。创建GSI时:

    1. 将原表的PK设为GSI的分区键,原表的排序键设为GSI的排序键;
    2. 设置GSI的投影类型为KEYS_ONLY——仅存储GSI的主键(即原表的PK+排序键),不包含原表的其他属性。
      这样GSI的单条数据体积远小于原表,扫描GSI的速度会比扫描原表快很多,之后在客户端对扫描结果中的PK进行去重,就能得到唯一的主键列表。
  • 关键优化点:

    • 优先选择KEYS_ONLY投影,最小化GSI的数据量,进一步降低扫描成本和时间;
    • 不要省略GSI的排序键,否则GSI会要求分区键(原表PK)唯一,导致原表中同一PK的多条目在GSI中被覆盖,无法完整获取所有存在的PK;
    • 扫描GSI时可以配合Limit和LastEvaluatedKey进行分页扫描,避免一次性处理过大的数据量。
  • 替代思路(可选):
    如果业务场景允许,在写入原表时同时维护一个专门存储唯一PK的小表(PK为原表PK,无其他属性),后续获取唯一PK时直接扫描这个小表效率更高,但会增加写入环节的额外开销。

内容的提问来源于stack exchange,提问作者joels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:13:20