1、简介
mysql中常用存储引擎是 innodb(5.5以后默认存储引擎) 和 myisam ;
常用索引分类 又分 聚簇索引和非聚簇索引
2、定义
在《数据库原理》一书中是这么解释聚簇索引和非聚簇索引的区别的:
聚簇索引的叶子节点就是数据节点,
而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。
聚簇索引:表数据是按照索引顺序来存储的,叶子节点存储真实数据,一张表只能有一个聚簇索引,一般是主键索引,如果没有会默认创建一个。其实就是数据和主键值保存在一起。
非聚簇索引:表存储数据与索引顺序无关,叶子节点包含的是索引字段值和指向数据页数据行的逻辑指针。
具体物理保存时,InnoDB存储文件格式分为: *.ibd(数据与索引)、*.frm(表定义); MyISAM文件格式为:*.frm(表定义)、*.myd(数据)、*myi(索引)。
在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。
参考: