聚簇索引:也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。
mysql聚簇索引:并不是索引的一种,是数据存储的一种方式,不同的存储引擎的实现方式不同,在innerDB中使用同一种结构存储了B-Tree索引和数据行。
当表有聚簇索引时,实际上将数据保存在索引的叶子页中。一个表中只能哟一个聚簇索引。
优点:

  1. 相关数据可保存在一起
  2. 读取数据速度快,因将索引和数据行保存在同一个B-Tree中
    缺点:
  3. 列表内容插入速度严重依赖插入顺序。按照主键的顺序插入是加载数据到innodb表中速度最快的方式。但如果不是按照主键顺序加载数据,那么加载完成后最好使用OPTIMIZE TABLE 命令来重新组织一下表.
  4.   更新聚簇索引的代价很高,因为会强制InooDB将每个更新的数据移动到新的位置。
  5.   基于聚簇索引的表在插入行,或者主键被更新导致需要移动行的时候,可能面临’页分裂(page split)‘的问题。当行的主键值要求必须将这一行插入到某个已满的页中时。存储引擎,存储引擎会将该页分裂成两个页面来容纳该行,这就是一次页分裂操作。页分裂会导致表占用更多的存储空间。
  6. 聚簇索引可能导致全表扫描变慢,尤其是行比较稀疏,或者由于页分裂导致数据存储不连续的时候。