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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务