MySQL中的索引结构

什么是索引

索引帮助MySQL高效获取数据的数据结构(有序)

提高查询效率,同时也降低更新表的速度,如对表进行insert 。update。delete时,效率降低。

索引结构

二叉树缺点:顺序插入时会行成一个链表,查询性能大大降低。大数据量情况下,层级较深,检索速度慢

红黑树:大数据量情况下,层级较深,检索速度慢

B-Tree(多路平衡查找树)

在根节点,叶子节点,以及非叶子节点是具体的数据

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

注:树的度数是指一个节点的子结点个数。

B+Tree

以一颗最大度数为4的b+tree为例

所有的数据都会出现在叶子节点,上面的非叶子节点起到索引作用

数据结构中叶子节点形成单项链表

hash(哈希索引)

哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。

如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决

Hash索引特点
1. Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,<,...)
2.无法利用索引完成排序操作
3. 查询效率高,通常只需要一次检索就可以了,效率通常要高于B+tree索引

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值