66

如果我根据索引散列键从表中检索单个项目,则 or 之间是否存在性能query()差异getItem()

4

4 回答 4

45

getItem会更快

getItem通过散列和范围键检索是 1:1 拟合,检索它所需的时间(因此性能)受散列和内部分片的限制。

查询导致搜索“所有”范围键。它增加了计算工作,因此被认为更慢。

于 2012-09-03T13:01:05.977 回答
28

在 Amazon 的 DynamoDB 中,无论采用何种访问方法,都可以保证您的性能。(你付钱)。

正如 Chen Harel 所建议的那样,DynamoDB 服务器本身可能存在几毫秒的差异,但由于 HTTP 请求 RTT,这些差异可以忽略不计。

这就是说,最好发出 a而不是在您有足够的信息时这样做GETQUERY

于 2012-09-03T14:36:04.503 回答
15

正如 aws 员工在其中一次讨论中所建议的那样,我引用:

GetItem 与限制 = 1 的查询的延迟将是相等的。

AWS 讨论链接

于 2020-02-04T20:08:35.750 回答
-1

两者之间没有性能差异。两个查询中的哈希计算都是 1 对 1 完成的。后者,即 get item 只是作为 JPA 存储库/spring findOne/findById 的类比提供,以使 Spring Bean 布线/Hibernate 配置中的布线更容易。

于 2019-02-21T19:53:08.220 回答