mysql索引底层数据结构

mysql索引底层数据结构

mysql实现索引主要使用的两种数据结构:hash和B+树:
我们比较常用的Mylsam 和innoDB引擎都是基于B+树的。

hash:(hash索引在mysql比较少用)他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快.但由于是哈希结构,每个键只对应一个值,而且是散列的方式分布.所以他并不支持范围查找和排序等功能.

B+树:B + Tree 是 MySQL 中使用最频繁的索引数据结构之一,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序,范围查找等功能.相对hash索引,B+树在查找单条记录的速度虽然比不上hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎.毕竟不可能只对数据库进行单条记录的操作.

B + 树索引:
基于多路平衡树结构,所有数据存储在叶子节点,且叶子节点通过双向链表有序连接。查询时需从根节点逐层向下遍历(类似查字典目录),最终定位到叶子节点获取数据,时间复杂度稳定在O(log n)。
绝大多数业务场景,尤其是范围查询,排序等

Hash 索引:
基于哈希表结构,通过哈希函数将索引键映射为哈希值,直接指向数据存储地址。查询时只需一次哈希计算即可定位数据,理论时间复杂度为O(1)。
仅适用于纯等值查询场景(如id = 100),且不涉及排序或范围操作

posted @ 2025-08-23 07:17  Breezy_space  阅读(19)  评论(0)    收藏  举报