mysql 聚簇索引与非聚簇索引

1、简介

mysql中常用存储引擎是 innodb(5.5以后默认存储引擎) 和 myisam ;

常用索引分类 又分 聚簇索引和非聚簇索引

2、定义

在《数据库原理》一书中是这么解释聚簇索引和非聚簇索引的区别的:  

聚簇索引的叶子节点就是数据节点,  

而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。  

聚簇索引:表数据是按照索引顺序来存储的,叶子节点存储真实数据,一张表只能有一个聚簇索引,一般是主键索引,如果没有会默认创建一个。其实就是数据和主键值保存在一起。

非聚簇索引:表存储数据与索引顺序无关,叶子节点包含的是索引字段值和指向数据页数据行的逻辑指针。

具体物理保存时,InnoDB存储文件格式分为: *.ibd(数据与索引)、*.frm(表定义); MyISAM文件格式为:*.frm(表定义)、*.myd(数据)、*myi(索引)。

在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。

对比

参考:

聚集索引与非聚集索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容