MySql中的索引

什么是索引

索引是数据库系统中的一种数据结构,它可以帮助我们快速检索数据,类似于书本的目录。
数据库中的数据都是存储在磁盘上的,而对磁盘进行IO操作相比于CPU的寄存器、内存来说效率是非常慢的,所以对磁盘进行访问一直是程序运行效率的痛点,如何高效的访问磁盘数据成为了急需解决的问题,索引由此而生。

B树与B+树的区别

在MySQL中,最常使用的索引就是B+树,而B+树是B树的增强版,为了更好说明B+树的特性,我们先对B树进行了解。

B树

B树是一种多叉树的数据结构,它与二叉树、红黑树、AVL树最主要的区别在于它有多个分叉,具体有多少个分叉取决于节点的度数(Degree)。
在这里插入图片描述

B+树

在这里插入图片描述

区别

  • 数据存储位置:B树每个节点有存储数据,B+树只会将数据存储在叶子节点;
  • 叶子节点结构:B树的叶子节点是独立的,而B+树的叶子节点之间会相互持有地址,形成双向链表结构。

因为这两个区别,会导致不同的查询特性:

  • 因为数据存储位置的不同,同样的规模的数据,B树的深度会比B+树更深,如果访问的数据是存在叶子节点中,那么访问IO的次数也就更多,但是如果访问的数据在根节点,那么就会直接命中返回。所以B树访问IO的次数不稳定,B+树相对来说更加稳定一些。
  • 因为叶子节点的结构问题,B树的范围查询及排序效率会很慢,而B+树叶子节点是有序的双向链表,所以范围查询及排序效率会很高。

聚簇索引与非聚簇索引

聚簇索引即索引值跟数据在同一个文件,这个索引通常是主键或者唯一键,可以快速定位到数据。
非聚簇索引即索引值跟数据不在同一个文件,该索引保存的值是聚簇索引中的索引值,所以通过非聚簇索引查询可能会进行回表操作。

组合索引

组合索引是指一张表中多个字段组成的索引,该索引的使用涉及到最左匹配原则,也就是说在查询时,如果需要用到组合索引,必须按照组合索引从左到右的顺序进行查询,否则可能不会走索引。

索引覆盖

如果查询的字段在索引值中已经存在,则不需要再去叶子节点获取数据,直接返回即可。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值