MySQL-索引
MySQL索引数据结构
B+Tree(B-Tree变种),特点:
非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能
索引类型
1、聚集索引/聚簇索引
将表的主键用来构造一棵B+树,并且将整张表的行记录数据存放在该B+树的叶子节点中。由于聚集索引是利用表的主键构建的,所以每张表只能拥有一个聚集索引。 聚集索引的叶子节点就是数据页。因此聚集索引的一个优点就是:通过过聚集索引能获取完整的整行数据。另一个优点是:对于主键的排序查找和范围查找速度非常快。
如果表没有定义主键,那么MySQL会使用唯一键索引来建立聚集索引,没有唯一性索引,MySQL也会创建一个隐含列RowID来做主键,然后用这个主键来建立聚集索引。
2、辅助索引/二级索引
对于辅助索引(Secondary Index,也称二级索引、非聚集索引),叶子节点并不包含行记录的全部数据。叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含了相应行数据的聚集索引键(即主键)。
回表
当通过辅助索引来寻找数据时,InnoDB存储引擎会遍历