以下内容参考自《高性能MySQL》
    
    
    1、前言
   
在学了聚簇索引与覆盖索引后,笔者就一直在纠结,覆盖索引与聚簇索引差不多啊,会有什么区别呢,在网上查了很多资料,感觉都是照搬书上的原话,千篇一律,讲得不明不白。通过仔细研究书上的内容,终于豁然开朗了。
    
    
    2、聚簇索引
   
- 
1、聚簇索引 
 
 并不是一种单独的索引类型,而是一种数据存储方式
 
 。具体细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存
- 
2、当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中。术语“聚簇”表示数据行相邻的键值紧凑的存储在一起。 
- 
3、 
 
 因为无法同时把数据行存放在两个不同的地方
 
 ,所以一个表中只能有一个聚簇索引。
- 
以上这几句话怎么理解呢 
 
 先看一张图:
 
 聚簇索引的数据分布
 
 
  
 
 然后书上是这么说的:
 
 在InnoDB中,聚簇索引就是表!!!
 
 
 所以这就解释了为什么表中只能有一个聚簇索引了,也解释了前面为什么说聚簇索引是一种存储方式了。
- 
InnoDB通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。 
 
 
 如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引
 
 ,也就是说
 
 无论怎么样建表后InnoDB都会创建聚簇索引
 
 ,更说明
 
 InnoDB的表中的数据存储方式就是聚簇索引
 
    
    
    3、InnoDB和MyISAM的数据对比
   
    通过对比主键索引和二级索引(非聚簇索引)就能更加好理解了
    
    
    
    什么是二级索引,
    
     除了主键索引外,其他的叫二级索引
    
    ,在InnoDB中,非聚簇索引就是二级索引。
   
    
     这里最好参考一下原书,讲得更深刻更清楚
    
   
 
