【mysql】索引存储结构B+树

参考:

https://zhuanlan.zhihu.com/p/545113372

https://www.bilibili.com/read/cv18157852

Mysql数据库引擎默认使用InnoDB,使用B+树数据结构。

一个表只能有一个聚簇索引,但可以有多个非聚簇索引,也就是多个索引目录提供数据检索。

1.主键索引:基于主键创建B+树索引结构。

B+树的所有数据都存储在叶子节点中,非叶子节点只存储键值信息,所有叶子节点间都有一个链指针来排序。

通过索引查询数据的时间复杂度为O(log n)。

2.二级索引(非主键索引)

主键索引和所有的二级索引都维护各自的 B+ 树结构,但是有个不同的地方在于,二级索引的叶子节点存储的不是数据,而是主键索引对应的主键值。

那么对于二级索引查找一条数据索要做的操作就是:

  1. 首先在二级索引中找到叶子节点对应的数据主键值;
  2. 根据这个主键值去聚集索引中找到真正对应的数据行。

所以需要两次 B+ Tree 查找。

另外:

SELECT * FROM event WHERE old IN (1,2,3)

IN()函数实际上是多个等值条件查询

参考:书《高性能MySQL》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值