/ Mysql / 22浏览

MySQL 索引

数据结构可视化
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

索引是帮助MySQL高效获取数据的排好序数据结构

二叉树

递增数据变成链表
image-1650002244059

红黄黑

树高无法控制
image-1650002250292

B树

image-1650002258171

B+树

非叶子节点不存储data
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问性能。
image-1650002289737

MyISAM索引文件和数据的分离的(非聚集)
*.frm *.MYI *.MYD

InnoDB索引(聚集)
*.frm *.ibd

非聚集索引(MyISAM):索引和数据分开存储

聚集索引(InnoDB):叶子节点包含完整的数据记录
(一种数据组织方式,不是真正的索引)

一般来说只有主键索引才是聚集索引。

二级索引存放的数据为主键字段,查到主键后会再回到主键索引查询记录
image-1650002300925

联合索引
排序规则:按照字段逐个比较排序

image-1650002306470
只有第一条SQL会走索引,最左前缀,从左开始匹配索引

关键字 EXPLAIN ?