为什么MySql使用B+树作为索引?

什么是索引?
排好序、快速查找的B+树数据结构

  • hash:对于普通的增删改查,仅查找一次,时间复杂度为O(1),但对于范围查找和排序查找不合适,时间复杂度会变为为O(n),而树的时间复杂度会一直保持O(log2(n)),这样更加稳定。
  • 二叉树:每一个节点上都会有两个根节点,左节点大于右节点,但会带来一种问题:极端情况下会发生右倾的错误,无法保证平衡,由二叉树退化成链表,复杂度由O(log2(n))变为O(n)。

二叉树右倾情况:
在这里插入图片描述

  • 平衡二叉树(AVL):在二叉树的基础上通过旋转解决了平衡的问题,但会带来新的问题,随着数据的增多,会使树的高度变大,从而会产生磁盘IO会增加 ,这样系统性能会下降。在最坏的情况,磁盘IO次数等于树的高度。
    平衡二叉树:
    在这里插入图片描述

红黑树:在这里插入图片描述

  • B树:会在平衡二叉树的基础上降低树的高度,从而减少IO次数。数据存放在根、枝、叶子节点上。因为磁盘页的存储空间是固定的,如果数据较大会导致存储的键值少,这样会使树的高度变大影响IO进而影响查询效率。
    在这里插入图片描述
  • B+树:与B树不同的是,所有的数据都存放在叶子节点,非叶子节点不存放数据,只存放键值和引用,并且叶子节点之间有指针相连,最终形成链表,方便查找不需要进行中序遍历。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值