【发布时间】:2023-03-11 12:11:02
【问题描述】:
什么时候使用哈希索引?
我知道散列理论:当通过散列搜索某物时,它在< 或> 上是不可比较的,它只能相等或不相等。所以与BTree相反,不能执行分而治之的搜索,而是尽量精确。但是我不明白什么时候有用?
【问题讨论】:
标签: sql postgresql indexing rdbms
什么时候使用哈希索引?
我知道散列理论:当通过散列搜索某物时,它在< 或> 上是不可比较的,它只能相等或不相等。所以与BTree相反,不能执行分而治之的搜索,而是尽量精确。但是我不明白什么时候有用?
【问题讨论】:
标签: sql postgresql indexing rdbms
哈希索引比 b-tree 索引更快——至少在理论上是这样。 b-tree 索引需要 O(log n) 的努力来搜索。哈希索引更接近常数时间。
鉴于性能的改进,它们有时很有用。通常不需要不等式和排序。
【讨论】:
在 PostgreSQL 中,btree 索引对索引条目大小的硬性限制约为块大小的 1/3。因此,即使 0.00001% 的表行的值可能超过限制,那么您就有问题了。哈希索引避免了这个限制。
【讨论】:
哈希索引对于相等查询很有用,即当您在表中查找特定元素时(例如,WHERE id=1)。在这种情况下,哈希索引理论上更快。
另一方面,如果您还需要搜索元素范围(例如,WHERE id>1 和 id
【讨论】: