Amazon qldb SELECT 查询以非常少的 READIo 搜索特定行

Amazon qldb SELECT query to search specific rows with very less READIo's

我有一个 table 包含以下列

用户ID(索引), SID(索引), 原因(指数), 时间值(指数), 金额

我想查询特定用户 ID 的原因,意思是我想要一些 cause 等于 water 但我只想要一个 ID 为 [= 的用户28=]

我现在的查询正在进行全面 table 扫描

SELECT Cause, Cause_Amount, UserID FROM Contribution WHERE UserID = 'u5JvslEo9DbQ7hcq4vkM74dWlxr2' AND TimeValue > 1620414948000 AND ( Cause = 'cleanAir' OR Cause = 'safeWater')

所以方法应该是它应该以给定的 id 为目标 userId,然后检查 TimeValue,然后检查原因和 return 结果。

我希望这是有道理的

一般来说,您应该在您的最高基数文档上放置一个索引 属性。这意味着在您的数据中最独特的 属性 建立索引。因此,如果您的系统中有 10 个用户,但 Contribution table 中有 1,000,000 个文档,则需要扫描 100,000 个文档。

如果您看到高阅读-IOs,这就像是因为您的用户数量少但贡献数量多。 Cause 似乎不太可能是高基数,而且 QLDB 还不 (9/8/2021) 支持范围查询,因此 TimeValue 上的范围查询可能也无济于事。

您的文档中是否还有其他属性可供您创建具有更高基数的索引?