索引的出现其实就是为了提高数据库查询的效率,就像书的目录一样
索引的常见模型
哈希表 这种结构适用于等值查询的场景 ,memcached 和其他一些nosql引擎
有序数组 在等值查询和范围查询中性能非常优秀 有序数组索引只适用于静态存储引擎
搜索树 二叉树,N叉树,以innodb 的一个整数索引为例,这个n差不多就是1200,这树高度为4 的时候,就可以存储1200的3次方个值,17亿,所以在一个10亿行标上的一个整数字段的索引,查找一个值最多只需要访问3次磁盘
N叉树由于在读写上的性能优点,以及适配磁盘的访问模式,已经被广泛应用 在数据库引擎中
数据库底层存储的核心就是基于这些数据模型的,每碰到一个数据库,我们需要先关注它的数据模型,这样才能从理论上分析出这个数据库的适用场景
B+树
每一个索引都是一棵B+树
主键索引 聚簇索引
非主键索引 二级索引
索引维护
自增主键 显然,主键长度越小,普通索引的叶子节点就越小
普通索引占用的空间也就越小
问题: 如何重建二级索引,主键索引?