索引之B+树结构

目录

一、什么是索引:

二、具体是什么数据结构:

三、为什么是B+树:

1、二叉树:

2、红黑树:

3、B树(多路平衡查找树):

4、B+树:

四、B树与B+树的区别:

五、Mysql中对B+树结构的优化:

六、hash表结构:

七、注意的点:


一、什么是索引:

是用来提高数据查询速度的一种数据结构

二、具体是什么数据结构:

注意:
    (1)索引是在Mysql体系结构中是由引擎层所实现的
    (2)Mysql中默认是InnoDB引擎
    (3)InnoDB引擎采用B+树结构实现索引

三、为什么是B+树:

1、二叉树:

 

优点:如上图,如果二叉树处于相对平衡的状态,那么查询D数据只需要三次比较

缺点:缺点1:如下图,如果是非平衡二叉树,此时查询D的数据效率就取决于树的高度,效率明显会低很多

缺点2:因为二叉树最多只能有两个子节点,因此当数据量非常大的时候,就算是平衡二叉树,由于其子节点的限制问题,就会导致二叉树的高度非常高,高度越高,比较的次数也就意味着越多

 

2、红黑树:

 

优点:二叉树的缺点之一是如果是非平衡二叉树的时候,查询数据的性能会变得很差。而这就是红黑树所解决的问题,也就是他的优点

缺点:但是,红黑树依然最多只允许两个子节点

3、B树(多路平衡查找树):

 

优点:二叉树与红黑树共同的缺点是树的高度问题,而B树就没有这个问题了

4、B+树:

 

四、B树与B+树的区别:

(1)B+树所有的数据都会出现字叶子结点

(2)叶子结点形成一个单向链表

(3)非叶子结点仅仅起到索引数据作用,具体的数据都是在叶子结点存放的

五、Mysql中对B+树结构的优化:

为了更好的进行范围查询,InnoDB引擎中在B+树的叶子结点中增加了一个链表指向(也就是此时不仅有向后的指向,还会有向前的指向)

 

六、hash表结构:

缺点:因为hash表结构存储数据时无序的,因此其只能进行数据的精确匹配,无法进行范围匹配,而B+树是有序的,因此可以进行范围匹配

七、注意的点:

(1)Mysql的InnoDB引擎中的行锁是加在索引上的,因此索引失效会导致行锁升级为表锁

比如:update语句中的where条件字段索引失效了,就会导致行锁升级为表锁

(2)在我们查询数据的时候,如果要对返回的数据进行排序处理,如果排序字段没有加上索引,那么Mysql的做法是先查数据,再进行排序。但是如果是对有索引的数据进行排序,那么查出来的数据就是有序的,因此不用进行二次排序(这也是索引优化的一个点)

(3)回表查询:

 

(3)覆盖索引:指查询使用了索引,并且返回的列在该索引中已经全部能够找到

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值