前言
本篇文章从数据结构,B+Tree的构建过程,MySQL索引实现,索引为什么那么快,MySQL有哪些索引,聚集索引和二级索引的区别,索引失效的原因,EXPLAIN关键字分析,索引实战,索引的优缺点,什么时候应该加索引,全方面帮助读者理解MySQL索引。
一、提出问题
- MySQL索引有哪些实现方式
- 什么是B+Tree索引,B+Tree索引的构建过程,跟二叉树、红黑树的对比
- 为什么数据库存储用B+tree索引,局部性原理是什么,为什么推荐自增id
- MySQL有哪些索引,聚集索引,二级索引,覆盖索引区别,回表是什么
- 怎么加索引,索引的使用场景有哪些,加索引一定好吗
- 索引失效的场景,引发什么后果
- EXPLAIN关键字查看MySQL是否使用索引
- 慢查询优化
接下来会循序渐进,让读者完全搞懂索引是什么
二、MySQL索引有哪些实现方式
MySQL索引实现方式有:B+tree索引、Hash索引、Full-text索引。
我们最常用的是B+tree索引,主键索引(也叫聚簇索引)本身就是一个B+tree索引树,非叶子节点存储主键id,叶子节点为一整行数据,叶子节点之间通过双向链表连接支持范围扫描,一般加的唯一索引,普通索引都是B+tree索引。
Hash索引只能在memory存储引擎下使用,这里不过多描述,优点是查询快,hash取模O(1)检索,缺点不支持范围查询,出现hash冲突性能会降低。
Full-text索引主要对varchar,text加索引,使用倒排索引的方式,与搜索引擎实现方式相似。
三、为什么使用B+tree索引
先说结论,主要因为磁盘读写速度远远低于内存速度,传统的机械硬盘大概慢一万倍,固态硬盘慢100倍,故减少磁盘I/O次数是提升索引性能的重点。
根据局部性原理和磁盘预读,Linux操作系统进

本文详细介绍了MySQL索引的实现方式,包括B+Tree、Hash和Full-text索引,并重点讨论了B+Tree索引的优化原理。文章还探讨了索引的类型,如聚集索引、非聚集索引等,以及索引失效的场景,提供了如何有效利用EXPLAIN关键字进行查询优化的指导。
最低0.47元/天 解锁文章
5万+

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



