谈谈聚簇索引与非聚簇索引

技术主题

聚簇索引是一种数据的存储方式,它的数据行只存放在索引(B+树)的叶子上,内部节点不存放数据。

聚簇索引

谈谈聚簇索引与非聚簇索引_第1张图片
聚簇索引默认是主键,如果没有定义主键,innodb会选择一个唯一的非空索引代替。如果没有这种索引,innodb会隐式定义一个主键作为聚簇索引。

非聚簇索引

非聚簇索引就是指B+树的叶子节点上的data,并不是数据本身,而是数据存放的地址,主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。主要是用在MyISAM存储引擎中。

谈谈聚簇索引与非聚簇索引_第2张图片
聚簇索引和非聚簇索引的对比
对比发现

谈谈聚簇索引与非聚簇索引_第3张图片
InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14" 这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。

回表的概念:若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Na

你可能感兴趣的:(关系型数据库mysql,算法,数据结构,java)