哈希索引:通过对键值进行一定的哈希算法得到新的哈希值,检索时不需要像btree那样从根节点到叶子节点逐级查找,而是通过哈希算法就可以快速定位到位置
btree和哈希结构的比较:
1、哈希结构的索引适合等值查询,前提是值唯一,因为会出现哈希碰撞的情况,就会导致找到具体的位置后,还得扫描链表
2、哈希结构不适合范围查找,原本有序的磁盘数据经过键值的哈希算法后可能试键值出现不连续,导致不能范围查找
3、哈希机构不适合排序、模糊查询、分组查询,因为这些本质上是范围查询
4、哈希结构不能遵循复合索引的最左原则
B-tree索引:是一个多路平衡搜索树,和二叉树的区别是二叉树每个节点只允许有两个子节点,而btree可以有多个节点
其特点是:
1、所有键值分布在整棵树中
2、任何一个关键字出现且只出现在一个节点中
3、一次查询可能未到叶子节点就可以查询结束,因为真实数据也存储在非叶子节点;性能逼近二分查找
B+tree也是一种多路平衡搜索树,它和B-tree的区别是:
1、B+tree存储的真实数据只在叶子节点
2、为所有叶子节点增加了一个链指针
为什么使用B+tree
1、B+树更适合外部存储,由于内节点无 data 域,一个结点可以存储更多的内结点,每个节点能索引的范围更大,也意味着 B+树单次磁盘IO的信息量大于B-树,I/O效率更高。
2、Mysql是一种关系型数据库,区间访问是常见的一种情况,B+树叶节点增加的链指针,加强了区间访问性,可使用在范围区间查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。
来源:CSDN
作者:圣殿骑士^_^
链接:https://blog.csdn.net/weixin_38635565/article/details/104671194