MySQL数据库中innodb存储引擎,B+树索引可以分为聚簇索引和辅助索引(有时也称非聚簇索引或二级索引)。这两种索引内部都是B+树,聚集索引的叶子节点存放着一整行的数据。
聚簇索引是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,每张表只能拥有一个聚簇索引
Innobd中的主键索引是一种聚簇索引,非聚簇索引都是辅助索引,像复合索引、唯一索引。
Innodb通过主键聚集数据,如果没有定义主键,innodb会选择非空的唯一索引代替。如果没有这样的索引,innodb会隐式的定义一个主键来作为聚簇索引。一般设置一个自增列做主键
聚集索引的优点是根据主键查找速度快,缺点是插入时最好按主键自增的顺序插入,不然会造成B+树的分裂,通过辅助索引查找时会先查找对应的主键索引
辅助索引访问数据总是需要二次查找。辅助索引叶子节点存储的是主键值。通过辅助索引首先找到的是主键值,再通过主键值找到数据行的数据页
innodb引擎使用时注意 用自增列做主键且不要太长,因为其他辅助索引会引用主键