在速度方面,SQL数据库中的主键查询是否类似于NoSQL中的键查询?

时间:2019-07-18 18:27:38

标签: sql postgresql nosql database-performance

据我了解,我们可以将SQL vs NoSQL与数组vs hashmap / dict进行比较。

(让我们考虑将PostgreSQL与MongoDB结合使用)

SQL排列在表中,并在行中搜索您要查找的内容。

NoSQL是按键值方式排列的,因此,如果您知道键,则将获得“直接”值,而无需搜索任何内容。

考虑到上述情况,当我仅使用主键作为WHERE在SQL中进行查询以获取一项时,它仍在进行行搜索还是对行进行“直接”命中? / p>

我希望我的疑虑得到理解

1 个答案:

答案 0 :(得分:2)

主键保证是唯一的。唯一键是使用索引实现的,在我所知道的所有数据库中,索引都是b树。

对主键的查询使用b树来访问数据。这是复杂的log(n)。

某些数据库支持其他索引结构,例如哈希表。通常,这样的查找更像O(1)而不是O(log n)。

我不认为您通过查看此类示例来尝试将NOSQL与SQL数据库区分开来。您应该从ACID属性和诸如延迟一致性之类的概念开始,查看他们正在尝试实现的要求。