https://blog.csdn.net/m0_45406092/article/details/111940017
首先,我们知道InnoDB采用B+树作为存储结构,那么必然需要一个列作为key,什么是key?
一个B+树的节点可以存储key、地址、行数据(仅叶子节点),key 就是不重复的值且可以比较(确保树进行分裂时,可以确定是左孩子还是右孩子)。
我们知道主键的特定就是主键的值不可重复,也不可为空
,正好符合B+树key的要求
主键特性参见《主键的概念作用及特点》
聚簇索引默认是主键,如果表中没有定义主键,InnoDB 会选择一个唯一的非空索引(确切说会选择一个唯一非空列作为主键)代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。
InnoDB 只聚集在同一个页面中的记录。包含相邻健值的页面可能相距甚远。
如果你已经设置了主键为聚簇索引,必须先删除主键,然后添加我们想要的聚簇索引,最后恢复设置主键即可