mysql 为什么建议 innodb 表要建一个主键?
答:在 mysql 的数据存储中 idb 文件中,要使用一颗聚簇索引来维护一个 b+ 树保存数据,那么 mysql 在组织索引的时候,会依赖唯一id,有下列几种情况:
- 如果有一个主键,可以直接使用主键建索引
- 如果没有主键,会从第一列开始选择一列所有值都不相同的,作为索引列
- 如果没有选到唯一值的索引列,mysql 会帮忙建立一个隐藏列,维护一个唯一id,以此来组织索引
那么为了避免 mysql 选择索引列和建立隐藏列的性能损耗,建议手动建立一个主键。