MySQL索引总结

文章探讨了MySQL索引的作用、优缺点,主要集中在B+树和哈希索引的数据结构上。B+树索引适用于范围查询和排序,而哈希索引提供快速的等值查找但不支持范围查询。Memory引擎支持哈希索引,InnoDB和MyISAM则使用自适应哈希索引。
摘要由CSDN通过智能技术生成

Mysql索引的数据结构

1. 索引的作用以及优缺点

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

优点:提高数据检索的效率,降低数据库IO的成本;当排序时使用索引进行,可以降低对手数据排序时CPU的消耗

缺点:索引的存储也需要占用空间;导致表数据的insert和update效率降低

2. 索引的数据结构及对比

Mysql的索引是在存储引擎层实现的,不同的引擎有不同的结构常用的索引的结构有

B+树索引:大部分存储引擎都支持该结构的索引

**哈希索引:**底层的数据结构是用哈希表实现的,只有精确匹配索引列的额查询才有效,不支持范围查询。

B+树索引 优点

  • 非叶子节点上可以存储更多的键值,相应的树的阶数会更大,因此树的深度会更小,在查找数据时进行报备磁盘IO的次数会减少,因此查询更快。
  • 所有数据记录都有序存储在叶子节点上,就会使得范围查找,排序查找,分组查找以及去重查找变得简单。
  • 数据页之间、数据记录之间都是通过链表连接的,可以更方便的在数据查询后进行升序或者是降序操作。

相对B树来说,B+树的所有节点都存放在叶子节点中,并且形成一个单向链表。

Mysql对经典的B+树进行了优化,增加了一个向相邻节点的叶子指针,形成了带有顺序指针的B+ 树,提高区间访问的性能。

哈希索引

采用一定的哈希算法,将键值映射成一定的哈希值,映射到对应的槽位上,存放在哈希表中,如果多个键值对映射到同一槽位上,就产生了哈希碰撞,可以用链表来解决该问题。

  1. 哈希索引只能进行对等比较,不支持范围查询

  2. 无法利用索引完成排序操作

  3. 组合hash索引不能利用部分索引键进行查询。

  4. Hash索引需要回表扫描

  5. 查询效率高,通常只需要一次检索即可,效率通常高于B+ 树索引,但是当遇到大量Hash值相等的情况后性能不一定比B+树高

在MySQL中,支持哈希索引的是Memory引擎。

InnoDB和Myisam存储引擎也支持哈希索引,但是需要通过伪哈希索引来实现,叫自适应hash索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值