索引数据结构

索引数据结构可视化网站链接

1. 二叉树

二叉树(Binary Tree)是每个节点最多有两个子节点的树结构,通常子节点被称为“左子节点”和“右子节点”。

二叉树的特点:

  1. 每个节点最多有两个子节点。

  2. 每个节点一定大于左子节点,且一定小于右子节点

  3. 即使树中的某个节点只有一个子节点,也要区分是左子节点还是右子节点。

在这里插入图片描述

缺点:

  1. 顺序插入时,会退化形成一个链表,查询性能大大降低。
  2. 大数据量情况下,层级较深,检索速度慢。

2. 红黑树

红黑树(Red-Black Tree)是一种自平衡的二叉树,它在每个节点上增加了一个颜色的属性,可以是红色或黑色,通过颜色和一些调整规则来确保树的平衡性,从而在动态插入和删除操作中保持相对平衡的状态。相比二叉树,节点间会进行自动的平衡,不会退化成链表。

红黑树的特点:

  1. 每个节点要么是红色,要么是黑色。
  2. 根节点是黑色。
  3. 所有叶子节点(NIL或空节点)是黑色。
  4. 如果一个节点是红色,则它的两个子节点都是黑色(即不能有两个相邻的红色节点)。
  5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

在这里插入图片描述

缺点:

  1. 本质还是二叉树,大数据量情况下,层级较深,检索速度慢。

3. hash

哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储到hash表中。
如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决。
InnoDB中具有自适应hash功能,hash索引是InnoDB存储引擎根据B+Tree索引在指定条件下自动构建的。
在这里插入图片描述

特点

  1. Hash索引只能用于精确查找(=,in),不支持范围查询(between,>,< 等)。
  2. 无法利用索引完成排序操作。
  3. 查询效率高,通常(不存在hash冲突的情况)只需要一次检索就可以了,效率通常要高于B+tree索引。

4. B树

B树(B-tree)是一种自平衡的树,相比于二叉树可以拥有更多的子节点。所有节点关键字是按递增次序排列,并遵循左小右大原则。
以一颗最大度数(max-degree)为5的B树为例,每个节点下最多有4个key,5个指针和5个子节点。
在这里插入图片描述

特点

  1. 一旦节点存储的key数量到达最大度数,就会裂变,中间元素向上分裂。
  2. 在B树中,非叶子节点和叶子节点都会存放数据。

5. B+树

B+树(B+tree) 是 B树的变种,相对于B树,它有以下特点:

  1. 所有的数据都会出现在叶子节点。
  2. 叶子节点使用指针相连,形成一个单向链表,便于进行范围查询和顺序访问。
  3. 非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的。

在这里插入图片描述

MySQL对 B+树进行了优化,在原有基础上,增加一个指向相邻叶子节点的链表指针,形成了带有顺序指针的
B+Tree(双向链表),提高区间访问的性能,利于排序。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值