聚簇索引的特点:
(1)按主键值的大小进行记录和页的排序
- 数据页(叶子节点)里的记录是按照主键值从小到大排序的一个单向链表。
- 数据页(叶子节点)之间也是按照主键值从小到大排序的一个双向链表。
- B+树中同一个层的页目录也是按照主键值从小到大排序的一个双向链表。
(2)B+数的叶子节点存储的是完整的用户记录,就是指这个记录中存储了所有列的值(包括隐藏列)
- 具有这两种特性的B+树称为聚簇索引,所有完整的用户记录都存放到这个聚簇索引的叶子节点处。这种聚簇索引并不需要我们在MySQL显式使用index语句去创建。Innodb存储引擎会自动为我们创建聚簇索引。在InnoDB存储引擎中,聚簇索引就是数据的存储方式(所有的用户记录都存储在了叶子节点),也就是所谓的索引即数据,数据即索引。
聚簇索引只能在搜索条件是主键值才能发挥作用,因为B+树中的数据都是按照主键进行排序的。当我们想以别的列作为搜索条件时,我们可以多创建几棵B+树,不同的B+树中的数据采用不同的排序规则。