mysql b 1_讲一下mysql的B+树,什么是聚簇索引,什么是最左匹配原则?

innerDB 引擎的 B+ 树底层本质是一个有序链表,根据主键排序,没有设置主键的会在内部生成一个默认主键,并且引入了页或者segment概念,每个segment内建跳表(页目录)加快链表的索引,并且在segment外加跳表,同样加快segment的定位。

所以根据主键查询的流程大概如下,先根据segment的跳表定位到是哪个segment,然后根据segment内部的跳表定位到具体的那条数据。

把跳表的合并就变成了B+树,可能是索引和存储性能更好的原因(磁盘4k一读,mysql 16k 一读),本质其实就是通过跳表加快链表的索引速度。

聚簇索引指的是根据主键建立起来的B+树,可以直接查到具体的数据,因为是根据主键排序的,所以要想通过索引找到数据,只能通过主键,不通过主键的话,存储的数据相当于是乱序的,只能所有数据遍历一遍。

其他字段的索引是根据这些字段(非主键)排序建立的B+树,但是叶子节点都是主键,所以根据 非聚簇索 引先找到主键,再拿着主键通过 聚簇索引 才能找到数据。

假设有一个联合索引,字段为a,b,c,在建立索引树时,先根据a排序,再根据b,最后根据c,所以如果一条sql没有a,就无法使用这个索引,因为它首先是根据a排序的。(其实多字段在一棵树上怎么排序,我也没想明白具体是怎么排的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值