索引:综合
聚集索引,非聚集索引
InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:
(1)如果表定义了PK,则PK就是聚集索引;
(2)如果表没有定义PK,则第一个not NULL unique列是聚集索引;
(3)否则,InnoDB会创建一个隐藏的row-id作为聚集索引;
画外音:所以PK查询非常快,直接定位行记录。
InnoDB普通索引的叶子节点存储主键值。
画外音:注意,不是存储行记录头指针,MyISAM的索引叶子节点存储记录指针。
基础:图论
https://blog.csdn.net/qq_30796379/article/details/80152350
B-Tree和B+Tree
https://www.cnblogs.com/coder2012/p/3330311.html
https://www.cnblogs.com/dongguacai/p/7239599.html
参考:https://blog.csdn.net/waeceo/article/details/78702584
参考文章
如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列
面试官:为什么 MySQL 索引要使用 B+树而不是其它树形结构?比如 B 树?
SQL 查询优化之 WHERE 和 LIMIT 使用索引的奥秘
MySQL 索引原理搞懂了?来,我问你答,接住 3 题算你赢!
SQL 查询优化之 WHERE 和 LIMIT 使用索引的奥秘