贾汪区建设局网站,动态型网站建设哪里便宜,青岛网站制作选ls15227,不会写代码怎么做网站在 InnoDB 引擎中#xff0c;每张表都会有一个特殊的索引“聚簇索引”#xff0c;也被称之为聚集索引#xff0c;它是用来存储行数据的。一般情况下#xff0c;聚簇索引等同于主键索引#xff0c;但这里有一个前提条件#xff0c;那就是这张表需要有主键#xff0c;只有…在 InnoDB 引擎中每张表都会有一个特殊的索引“聚簇索引”也被称之为聚集索引它是用来存储行数据的。一般情况下聚簇索引等同于主键索引但这里有一个前提条件那就是这张表需要有主键只有有了主键它才能有主键索引有主键索引才能等于聚簇索引。
所以看到这里我们应该明白一个道理聚簇索引并不完全等于主键索引因为一张表从结构上来讲可以没有主键索引如果没有主键索引那么聚簇索引就不再是主键索引了。那 InnoDB 中的聚簇索引到底是啥
聚簇索引诞生过程
在 InnoDB 引擎下聚簇索引的诞生过程如下
当你为一张表创建主键时也就是定义 PRIMARY KEY 时此时这张表的聚簇索引就是主键索引。通常情况下我们应该为一张表设置一个主键如果没有合适的列作为主键列我们可以定义一个自动递增的唯一列为主键并且在插入数据时是自动填充此列。 然而如果一张表中没有设置主键那么 InnoDB 会使用第一个唯一索引unique且此唯一索引设置了非空约束not null我们就使用它作为聚簇索引。 如果一张表既没有主键索引又没有符合条件的唯一索引那么 InnoDB 会生成一个名为 GEN_CLUST_INDEX 的隐藏聚簇索引这个隐藏的索引为 6 字节的长整数类型。 总结 在 InnoDB 引擎中每张表都会有一个特殊的索引“聚簇索引”一般情况下聚簇索引等于主键索引但聚簇索引又不完全等于主键索引因为一张表中没有主键索引那么聚簇索引会使用第一个唯一索引此列必须为 not null如果以上情况都不满足那么 InnoDB 会生成一个隐藏的聚簇索引。