如果在动态表上执行“ get_item”操作,则必须提供分区(主)键。
即使GSI(全局二级索引)的作用与分区键(主键)完全相同,也不允许您对其执行“ get_item”操作。
要使用GSI,您需要“查询”数据库。
所以我的问题是 :GSI的带有“等于”运算符的“查询”操作是否与分区键的“ get_item”一样有效?>
答案 0 :(得分:0)
我相信GetItem的性能要好得多,因为它只能是单个哈希键(分区键和可选的排序键)中的一项。
查询是高效的,因为它只会从单个分区中进行检索,但是可以返回多个项目,具体取决于用于排序键的运算符。
答案 1 :(得分:0)
从GSI读取数据时需要 query 操作的原因是,与表本身不同,GSI可能包含同一键的多个项目。因此,尽管对于表本身,您可以保证并且被迫每个分区+排序键只能有一个项目,但是GSI最终可能会有多个项目映射到GSI中的同一分区+排序键。
与主表上的get项相比,我不会评论查询GSI的性能,只是说如果您担心性能,则应该运行自己的基准,尽管在大多数情况下,差异应该可以忽略不计。