添加PK时隐藏的MySQL [InnoDB] PK会发生什么?

时间:2015-06-16 22:27:26

标签: mysql indexing innodb

在MySQL中使用InnoDB存储引擎时,如果在创建表时未指定PRIMARY KEY,则使用隐藏的唯一索引作为聚簇索引。由于数据字典上的互斥锁,我已经读过这些隐藏的索引可能导致争用。

我的问题是 - 如果我在表格中添加PRIMARY KEY,隐藏的PK会发生什么?

1 个答案:

答案 0 :(得分:1)

如果向表中添加PRIMARY KEY,InnoDB会将其用作集群索引。

如果InnoDB在非NULLable列上使用UNIQUE INDEX作为集群索引,则UNIQUE INDEX仍然存在,但它将成为二级索引(当您添加PRIMARY KEY时。)

如果InnoDB在合成行id列上使用隐藏索引作为集群索引,那么将删除该隐藏索引(当您添加PRIMARY KEY时)。