mysql的索引
mysql索引的数据结构
- B+Tree结构
- 最上层:根节点
- 中间层:非叶子节点
- 最下层:叶子节点
- B+Tree结构索引原理:
https://www.jianshu.com/p/486a514b0ded
mysql索引分类
聚集索引(主键)
- 定义:聚集索引指的主键
- 存储:最底层的叶子节点存储的就是数据
非聚集索引(又称二级索引)
- 定义:非聚集索引又叫辅助索引或者二级索引,即除开主键外的索引,比如复合索引、前缀索引、唯一索引、全文索引
- 非聚集索引的存储:最底层的叶子节点<键值,(记录)地址>,即主键所在的地址
- 非聚集索引的信息(两种形式)
- 记录的物理地址—页号:槽号:偏移量
- 记录的主键值
聚集索引和非聚集索引的区别
- 区别
- 前者(主键)的叶子节点就是数据节点
- 后者叶子节点仍然是索引节点(存的主键所在的位置),so需要两次索引才能找到数据
- 由于二级索引不保存完整数据,故它的树高度更小,然而索引效率低(多一次索引哦)
- 注意:仅当主键发生改变时,才会更新二级索引
- 举例说明
- 聚集索引:查字典的场景,每个字所在的位置有一个页码,如果你知道一个字的所在具体页数便可直接翻到相应的页,此刻可以把字典中的页码看成主键,该页码就是聚集索引
- 非聚集索引(二级索引):此操作就如查字典,先找到生字的偏旁部首查找到字在哪一页(获得主键的位置),然后再翻到生字的具体章节叶
mysql索引原理以及查询优化
- 索引原理以及查询优化:https://www.cnblogs.com/bypp/p/7755307.html