MySQL 简述聚簇索引和非聚簇索引

答案

聚簇索引的叶节点就是数据节点,而非聚簇索引的叶节点仍然是索引节点,并保留一个链接指向对应数据块

MyISAM的是非聚簇索引,B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。

InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上

MySQL InnoDB一定会建立聚簇索引,把实际数据行和相关的键值保存在一块,这也决定了一个表只能有一个聚簇索引

  • 1.InnoDB通常根据主键值(primary key)进行聚簇

  • 2.如果没有创建主键,则会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引

  • 3.上面二个条件都不满足,InnoDB会自己创建一个虚拟的聚集索引

聚簇索引的

  • 优点:就是提高数据访问性能。

  • 缺点:维护索引很昂贵,特别是插入新行或者主键被更新导至要分页(page split)的时候。