MySQL B+树

B树

可以看成平衡二叉树的扩展

1、每个节点最多有m个分支,最少分支数(根节点且不是叶子节点),至少有两个分支;最少分指数(非叶子节点非根节点),至少有两个m/2(向上取整)个分支

2、有n(k=<n<=m)个分支的节点有n-1个关键字,按递增排列,k=2(根),k=[m/2]非根非叶

3、节点内关键字各不相等

4、叶子节点处于同一层:可以用空指针表示,查找失败的位置

B+树

1、在B+树种,具有n个关键字的节点有n个分支。B树,有n个关键字的节点有n+1个分支

2、在B+树中,每个节点关键字个数:根(2m),非根(m/2m)

3、B+,叶子节点包含信息,并且包含全部关键字。叶子节点引出的指针指向记录。

4、B+树,非叶子节点仅仅索引作用,非叶子节点中只包含最大关键字和指向子树的指针,不包含记录对应记录的存储地址。。。。B树,每个关键字对应一个记录的存储地址。

5、B+树,有一个指针指向关键字最小的叶子节点。所有叶子节点连城一个线性链表

B 和 B+的区别

1、在B树中,你可以将键和值存放在内部节点和叶子节点

2、在B+树中,内部节点都是键,没有值。叶子节点同时存放键和值

3、B+树的叶子节点有一条链相连,而B树的叶子节点各自独立。

使用B+树的好处

1、B+树的内部节点只存放键,不存放值,一次读取可以在内存页种获取更多的键,可以更快的缩小查找范围

2、B+树的叶子节点 有一条链连着。当需要进行一次全部数据遍历的时候,B+树只需要使用O(logN)时间找到最小的一个节点,然后通过链进行O(N)的顺序遍历即可。

但是B树则需要对每一层进行遍历,需要多次内存置换,需要花费更多的时间。

使用B树的好处

1、B树可以在内部节点同时存储键和值,因此,把频繁访问的数据放在靠近根节点的地方,可以大大提高数据的查询效率。

2、B树的这种特点在特定数据重复多次查询的场景种更加高效。

数据库为什么使用B+树,而不是B树

因为B+树的好处。

数据库的数据读取需要进行巨大的磁盘IO操作。

需要【更快地缩小范围和更少的读取次数】,所以数据库选用B+树作为底层实现。

mysql 问题

为什么索引失效?

联合索引,里面的key有多个,先按照k1升序排序,如果k1相同,按照k2升序排序,如果k2相同,按照k3进行升序排序

为什么使用最佳左前缀法则?

最佳左前缀法则:带头大哥不能死、中间兄弟不能断

在联合索引里面,要使用最佳左前缀法则

like失效原理

or

不等于

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值