深入理解MySQL索引底层数据结构

文章探讨了二叉树、链表、红黑树和B+树等数据结构在存储和查询上的特点,以及数据库索引如聚集索引、非聚集索引和哈希索引的工作原理,强调了主键选择和自增主键的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

听课问题(听完课自己查资料)

  1. 什么是二叉树 二叉树是怎么存储数据的
  2. 一个链表是一个集合的数据结构 List是怎么便利找到指定下标元素为什么会快?
  3. 什么是红黑树 红黑树是怎么存储数据的
  4. 什么是B TREE 是怎么存储数据的
  5. 什么是B+TREE 是怎么存储数据的

疑惑答案

a. 二叉树是按照插入的顺序依次排序

比如依次插入的数据 为 : 5、4、6、5、5、5、5

他们存储的时候为 :

  • 5是第一个存进去的 所以放在了第一个也就是根节点
  • 4第二个放进去小于根节点 5 所以在 左边
  • 6第三个放进去大于根节点放在右边
  • 5第四个放进去等于(不小于根节点)根节点所以放在根节点5右边 又因为右边有6了 小于6所以放在了6的左边
  • 5第五个放进去不小于根节点5放左边 又小于6放左边又不小于5放右边
  • 剩下的同理....

ⅰ. 查询方法

比如查询 6 会发现根节点为5 因为6大于5所以去右边找然后就找到了5

ⅱ. 二叉树优点

查询速度快, 比如查询6 这样直接就去右边节点找了可以直接排除左边的数据,而不用去对比全部的数据了

ⅲ. 二叉树缺点

可能会出现偏移的特别厉害 比如1、2、3、4、5依次插入 就会导致形成一个链表,这样二叉树就没必要了

b. 二叉树会形成链表 那么链表为什么会快呢?

例如Java中的链表

ArrayList是一个带有下标的数组

而LinkedList是一个不带有下标的链表根据插入的顺序串在一起的链表,他的查询速度会比较慢是因为 每次查询都要遍历所有的元素

所以他们中ArrayList是一个查询比较快的List 主要是因为 一个数组他是可以通过下标获取元素的

而二叉树中如果形成了类似于一个链表就会导致和LinkedList一样每次查询都会遍历所有的元素

c. 平衡二叉树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值