聚簇索引和非聚簇索引的区别
在于key和data是否相邻,非聚簇索引下存的是data的地址,还需根据地址去获取数据。innodb的主键是聚簇索引
聚簇索引的优点
innodb是使用B+树来存储索引
1.在同一个树中,访问快
2.覆盖索引可以使用主键值(非主键索引存的是主键的key,而不是data)
聚簇索引的缺点
1.如果数据都存内存中,聚簇和非聚簇的访问速度没有什么区别
2.按照主键顺序插入效率最高
这个是按照顺序插入的图,索引是有页的概念的:
下面来个不按顺序插入的:
3.对聚簇索引列进行修改,会发生数据移动(id 1 改成 10),页分裂或页合并。
4.可能造成索引慢,比如上图的第二页就只有一个8。扫描这个页不划算。