mysql的B+Tree索引

索引是什么?

索引是为了加速对表中的数据检索而创建的一种分散存储的数据结构
image

为什么要用索引

  • 索引能极大的减少存储引擎需要扫描的数据量
  • 索引可以把随机IO变为顺序IO
  • 索引可以帮助我们在进行分组、排序等操作时避免使用临时表

B-Tree

image

B+Tree

image

B-Tree与B+Tree的区别

  • B+Tree节点关键字搜索采用闭合区间
  • B+Tree非叶节点不保存数据相关信息,只保存关键字和节点的引用
  • B+Tree关键字对应的数据保存在叶子节点中
  • B+Tree叶子节点是顺序排列的,并且相邻节点具有顺序引用的关系
Innodb中B+Tree的表现形式(聚集索引)

image

Innodb中B+Tree的表现形式(非聚集索引)

image

最左匹配原则

在索引中关键字进行对比,一定是从左到右依次进行,而且不可跳过

覆盖索引

如果查询列可以通过索引节点中的关键字直接返回,则该索引称为覆盖索引。

因为在innodb引擎中,只有主建是聚集索引,其他索引都是非聚集索引
非聚集索引叶子节点存的是主建的值,通过非聚集索引找到主建值再到聚集索引里面去再查找数据(回表)

下面有一首网上流传的打油诗比较有意思,推荐给大家:

全值匹配我最爱,最左前缀要遵守;

带头大哥不能死,中间兄弟不能断;

索引列上少计算,范围之后全失效;

Like百分写最右,覆盖索引不写星;

不等空值还有or,索引失效要少用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值