MySQL学习笔记——索引结构


一、索引是什么?

索引(index)是帮助MySQL高效获取数据数据结构(有序)。在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用指向数据,这样可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

二、索引的数据结构

1.Btree(多路平衡查找树)

以一颗最大度数(一个节点的子节点个数)为5的b-tree为例(每个节点最多存储4个key,5个指针);

Btree的创建过程

请添加图片描述

2.B+tree

以一颗最大度数为4的b+tree为例
在这里插入图片描述

相对于B-Tree区别:

①.所有的数据都会出现在叶子节点
②.叶子节点形成一个单向链表

MySQL中的B+Tree

在原B+Tree的基础上增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
在这里插入图片描述

3.Hash

采用hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。

hash的特点

  1. 快速的查询速度:由于Hash索引通过哈希函数直接定位数据的位置,因此在大多数情况下可以实现O(1)的时间复杂度,比b+tree快。
  2. 适合精确匹配查询:Hash索引适用于精确匹配查询,如=、IN和<=>等操作符,因为这些查询可以直接通过索引定位到数据。
  3. 不支持排序和范围查询:Hash索引不支持排序和范围查询(如>、<、BETWEEN等),因为数据在索引中不是按照排序顺序存储的。
  4. 空间消耗:相对于其他类型的索引,Hash索引通常需要更多的空间,因为它需要存储更多的哈希表信息。
  5. 不适合频繁更新的场景:由于Hash索引需要维护哈希表,当数据表中的数据经常变更时,Hash索引需要更新,这可能会导致性能下降。

在这里插入图片描述

存储引擎支持

在MySQL中,支持hash索引的是Memory引擎,而InnoDB中具有自适应hash功能,hash索引时存储引擎根据B+Tree索引在指定条件下自动构建的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值