为什么用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

全部评论

相关推荐

xiaolihuam...:当然还有一种情况是你多次一面挂,并且挂的原因都比较类似,例如每次都是算法题写不出来。面试官给你的评价大概率是算法能力有待加强,算法能力有待提高,基础知识掌握的不错,项目过关,但是coding要加强。短期内高强度面试并且每次都是因为同样的原因挂(这个你自己肯定很清楚),会形成刻板印象,因为你偶尔一次算法写不出来,面试官自己也能理解,因为他清楚的知道自己出去面试也不一定每一次面试算法都能写出来。但是连续几次他发现你的面屏里面都是算法有问题,他就认为这不是运气问题,而是能力问题,这种就是很客观的评价形成了刻白印象,所以你要保证自己。至少不能连续几次面试犯同样的错。算法这个东西比较难保证,但是有些东西是可以的,例如某一轮你挂的时候是因为数据库的索引,这个知识点答的不好,那你就要把数据库整体系统性的复习,下一轮面试你可以,项目打的不好,可以消息队列答的不好,但是绝对不可以数据库再答的不好了。当然事实上对于任何面试都应该这样查漏补缺,只是对于字节来说这个格外重要,有些面试官真的会问之前面试官问过的问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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