BTREE索引
BTREE 索引的演变
BTREE 索引上层节点保持下层节点的最小值(根节点、枝节点、叶子节点)
B+TREE 在BTREE 索引的基础上增加了叶子节点的双向指针
B*TREE 在B+TREE 索引的基础上增加了枝节点的双向指针
BTREE 索引在功能上的分类
辅助索引
聚集索引
辅助索引的底层建立机制
管理员选择一个列创建辅助索引
MySQL 自动取出此列的值,并将此列的值进行排序
将排序好的数据均匀存储到索引的叶子节点,并生成枝节点和根节点(叶子节点中的值都会对应聚集索引值(主键值))
聚集索引的底层建立机制
MySQL 自动选取主键作为聚集索引列,没有主键的会选择唯一键,如果都没有会生成隐藏主键
MySQL 按照聚集索引列的顺序,有序地存储数据行
聚集索引直接将原表的数据页作为叶子节点,然后提取聚集索引列向上生成枝节点和根节点
聚集索引和辅助索引的区别
表中任何一个列都可以创建辅助索引
一张表中聚集索引只能有一个,一般是主键
辅助索引的叶子节点只存储索引列的值+聚集索引列的值
聚集索引叶子节点存储整行数据
MySQL的表数据存储是聚集索引组织表
辅助索引详细分类
单列辅助索引
联合索引(覆盖索引)
唯一索引
索引树高度的问题
索引树高度越低越好,一般3-4层为最佳
数据行较多的问题
数据行较多时,可采取分表、分片、分布式架构
字段长度较长的问题
如果业务允许,尽量选择字段长度较短的列作为索引列;
业务不允许则采取前缀索引的方式
Last updated