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,

InnoDB与MyISAM索引原理及失效情况解析

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

被折叠的 条评论
为什么被折叠?



