饭前思考1 - 主键索引和普通索引有什么区别?

在MySQL种,索引是在存储引擎层实现的,所以并没有统一的索引标准,由于InnoDB存储引擎在MySQL数据库中使用
最为广泛,下面以InnoDB为例来分析一下其中的索引模型,在InnoDB中,表都是根据主键顺序以索引的形式存放的,
InnoDB使用了B+树索引模型,所以数据都是存储在B+树中的,如图:

从图中可以看出,根据叶子节点内容不同,索引类型分为主键索引和非主键索引。
主键索引也被称为聚簇索引,叶子节点存放的是整行数据;而非主键索引被称为二级索引,叶子节点存放的是
主键的值。
如果根据主键查询,只需要搜索ID这颗B+tree
而如果通过非主键索引查询,需要先搜索k索引树,找到对应的主键,然后再到ID索引树搜索一次,
这个过程叫做回表。
总结,非主键索引的查询需要多扫描一颗索引树,效率相对更低。

lower 非主键索引 先搜索k索引树 再搜索id主键索引tree, k索引树可以理解为索引标识的字段
power 主键索引

posted @ 2022-02-17 18:45  ukyo--君君小时候  阅读(173)  评论(0编辑  收藏  举报