MySql 索引,Hash索引,B+Tree索引,索引失效总结

本文介绍了MySQL中InnoDB和MyISAM两种引擎的索引类型,重点讲解了B+Tree索引的工作原理,包括Hash索引的优缺点。讨论了InnoDB中主键和非主键索引的区别,以及联合主键的影响。同时,文章列举了可能导致索引失效的几种情况,如最左前缀原则、范围查询、不等于操作和LIKE通配符的使用。还提到了VARCHAR索引长度限制及其影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySql 表有很多类型,这里只讲InnoDB,MyISAM这两种,侧重InnoDB 中的B+Tree索引,其他的大致说说.


首先说说索引的类型,一般索引分为Hash索引和BTree索引(实际结构是B+Tree)

先说Hash索引

如果需要等值查询,Hash索引的优势非常大,但有一个前提:键值唯一(重点)

但是Hash索引无法完成范围查询,无法使用索引排序,无法使用 like'XXX%'这种的模糊查询,不支持联合索引,在大量重复键的情况下,最左前缀原则的效率极低(存在哈希碰撞).

所以说这种索引实际使用得比较少.

接下来说说B+Tree索引

B+Tree的结构如图,除开叶子节点,其余节点都只存储key,这样可以使得非叶子节点的存储空间变小,增大度.叶子节点的索引本身就已经是有序存在,单从这一点看,有点像链表,可以提高访问性能.B+Tree的结构非常重要,这直接影响了索引失效的问题.


接下来回头看看InnoDB,MyISAM这两种引擎对应的B+Tree索引的区别.

先看看InnoDB,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值