基于哈希的索引和基于树的索引有什么区别?

Posted wuyepeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于哈希的索引和基于树的索引有什么区别?相关的知识,希望对你有一定的参考价值。

 

B+树是一个平衡的多叉树。B+树从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动。

哈希索引采用一定的哈希算法,把键值换成新的哈希值,检索时不需要类似B+树那样从根节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置。

两者的区别:

1.hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询

(等值查询。哈希索引具有绝对优势(前提是:没有大量重复键值,如果大量重复键值时,哈希索引的效率很低,因为存在所谓的哈希碰撞问题。))

2.hash索引无法被用来进行数据的排序操作

3.对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用

4.Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高

 

以上是关于基于哈希的索引和基于树的索引有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

什么是自适应哈希索引

转:基于B-树和B+树的使用:数据搜索和数据库索引的详细介绍

mysql索引小记

oracle 数据库中主键索引和唯一索引有啥区别

哈希索引

这个基于数组的数据结构有名字吗?