为什么用b+树做mysql索引?还有其他类型吗?

一、数据存储的原理?
二、索引是什么呢?
三、如果没有索引会怎样?
四、有索引会怎样?
五、所以还有哪些索引类型呢?
六、b+树有什么优点呢?
七、引用

数据存储的原理?

  • 数据库文件是以磁盘文件存放在系统中的(持久性)
  • 所以决定我们select的快慢,是由执行磁盘io的次数决定的

所以,想提升数据的查询数据,就得减少磁盘io

所以,出现了索引。

索引是什么呢?

  • 索引是帮助高效查询数据的数据结构,记录了某些列的值(如唯一索引、联合索引等,由一个或多个字段组成)
  • 常见的有b树+b+树

如果没有索引会怎样?

  • 我们需要一条条记录去判断是否符合,这就是全表扫描,效率很低,最差情况为最后一条才查到数据

有索引了会怎样?

  • 比如我们将name设置为索引,我们先去查找索引(此前name已经按照如字母排序排列),所以我们可以像查字典一样去查找该数据,直接拿到数据(非聚簇索引)
  • 又比如我们用id设置为索引,name为辅助索引,我们就可以通过name查找到id,再由id找到对应记录(聚簇索引)
  • 聚簇索引指索引和数据放一起,找到索引则找到数据
  • 非聚簇索引指索引和数据分开,找到索引后再指向数据

所以还有哪些索引类型呢?

  • 链表
  • 数组
  • AVL(平衡二叉树,磁盘io过多,最坏情况次数为树的高度
  • b/b+ 树

因为AVL磁盘io过多,所以为了减少,就需要减低**树的高度**,因此就出现了**b/b+树**

b+树有什么优点呢?

  • 对于磁盘友好,数据都放在叶子结点
  • 比起AVL可以减少磁盘io次数,而且稳定(都在叶子结点)
  • 范围查找方便(叶子结点间有指针,形成链表)

https://blog.csdn.net/qq_36520235/article/details/94317993

全部评论

相关推荐

04-08 23:14
已编辑
南阳理工学院 算法工程师
本人情况:26届双非本科,两段实习经历,目前拿到的都是实习的offer,一个校招的都没有,他们都说先实习,然后等拿到毕业证了直接转正,我又害怕干三个月给我叉出去面试题也发一下吧### 杭州问尔信息技术后端登录你是怎么做的?JWT令牌你了解过吗?他虽然是一段字符串,他表达了什么东西?怎么解析出来信息和过期时间?JWT令牌怎么续期?如果我拉黑一个账号,要怎么做?两种方案(有无redis)mongodb和mysql的区别?mongodb和mysql分别实用于什么项目?选型你会怎么选?数据库的事务,那些地方需要使用,那些地方不需要使用?他会影响什么性能?mysql和pgsql有什么差异你知道吗?消息队列 redis也有,为什么要用mq?前后端会部署吗?docker会用吗?内部通信前端 async和 await你知道吗?异步编程的原理是什么?vue3 为什么你改变一个字符串 前端会跟着改动AI工具会用什么?你会怎么用?### 仲财通常用的锁有哪些synchronize和ReentrantLock的区别分布式锁了解吗?分布式事务mysql表字段sql优化什么时候用索引索引什么时候会失效mysql事务ioc一些项目应用问题### 观妙科技项目问题...zset的架构是什么样子的线程池突然队列被打满了怎么办?如果上游和下游都无法控制,该怎么维护select * from user where age>20 order by update_time 索引设计检索过程是什么样的冒泡排序和快排,有什么区别怎么判断链表有没有环### 观妙科技-二面项目部分...线程池的核心参数有哪些你是怎么用线程池的JMMG1模型跳表介绍一下平衡二叉树TCP为什么要三次握手?说一下hashmap红黑树的特征你有什么学习的方法
牛马人的牛马人生:对学院本而言很强了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务