001-MySQL索引的数据结构和算法

索引

索引:排好序的数据结构

没有索引会怎么样?
逐行扫描
注意这里的逐行扫描并不是说数据在挨着或者有什么联系 这些数据是分散在磁盘中

索引就是用来减少磁盘I/O操作的

二叉树

特点:左节点 < 父节点 < 右节点
查找的时间复杂度
在这里插入图片描述
缺点:单边增长数列效率没有提升

红黑树

也叫:二叉平衡树
特点:左节点 < 父节点 < 右节点 但是会自动平衡
在这里插入图片描述
缺点:树的高度不可控

B Teee

特点:左节点 < 父节点 < 右节点
数上的节点是 索引组
索引组内的索引 依次递增
在这里插入图片描述

B+ Teee

所有的数据按大小排序放入叶子节点中
非叶子节点只用于索引(每个叶子节点中的第一个数据放入父节点中)
父节点中存放 数据:下一个节点的地址:数据 :下一个节点的地址

在这里插入图片描述

MySQL中的B+Tree:

  1. Mysql中的B+ Tree叶子节点指针是双向的 并且最后一个节点的尾指针指向第一个节点的头部 这样做的目的是为了方便范围查找
  2. 数据存储容量
    每个节点大小 16kb (确保磁盘I/O的操作快速 sql可查)
    bigint为例:个数 = 1170 * (n - 1)层 * 16
  3. 非叶子结点常驻内存
为什么Mysql用了B+Tree
  1. B+ Tree 因为非叶子节点只存储了索引数值 而节省了大量的内存 使得每一层存放的内容可以大大增加从而降低树的层数
  2. 所有数据按顺序存在叶子节点上 可以提高范围查询的效率
  3. B+ Tree非叶子节点可以缓存在内存中 大大减少了磁盘I/O操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值