哈希索引的用途是什么?

4

何时使用哈希索引?

我了解哈希的理论:当通过哈希搜索时,它不能进行比较 <>,它只能相等或不相等。因此,与BTree相反,它不能执行分而治之的搜索,而是尝试精确匹配。但我无法理解何时使用它?

3个回答

5

理论上,哈希索引比B树索引更快。B树索引的搜索需要O(log n)的时间复杂度,而哈希索引更接近常数时间。

由于性能提升,它们有时非常有用。通常不需要使用不等式和排序。


是的,使用案例是什么?在什么情况下使用哈希索引是最理想的? - undefined
唯一的理论用例是Gordon提到的速度增益。实际上,它们通常并不更快(真是让人沮丧!),因此相当无用。 - undefined
@Gordon,我完全同意,但请提供一个实际的用例。 - undefined

3
哈希索引对于等值查询非常有用,即当您在表中查找特定元素时(例如,WHERE id=1)。在这种情况下,哈希索引在理论上更快。
另一方面,如果您还需要搜索元素的范围(例如,WHERE id>1 and id<10),那么哈希索引就无用了,您需要使用B树。

2
在PostgreSQL中,btree索引对于索引条目的大小有一个硬性限制,大约为块大小的1/3。因此,即使表中仅有0.00001%的行可能具有超过限制的值,您也会遇到问题。哈希索引可以避免这种限制。

太棒了!这是唯一一个哈希索引有用的情况吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接