【面试题话术】mysql 为什么建议 innodb 表要建一个主键?并且推荐使用整形自增主键?

掌握专业技能很重要,如何合理清晰的回答面试官的问题也很重要,这里只记录面试的话术,不对知识做扩展讲解,可以直接答给面试官。

mysql 为什么建议 innodb 表要建一个主键?

在 mysql 的数据存储中 idb 文件中,要使用一颗聚簇索引来维护一个 b+ 树保存数据,那么 mysql 在组织索引的时候,会依赖唯一id,有下列几种情况:

  1. 如果有一个主键,可以直接使用主键建索引
  2. 如果没有主键,会从第一列开始选择一列所有值都不相同的,作为索引列
  3. 如果没有选到唯一值的索引列,mysql 会帮忙建立一个隐藏列,维护一个唯一id,以此来组织索引

那么为了避免 mysql 选择索引列和建立隐藏列的性能损耗,建议手动建立一个主键。

为什么推荐使用整形作为主键

  1. 使用整形作为主键相比字符型可以节省数据页的空间。
  2. 构建索引 b+ 树时,为了保证索引的有序性,使用整形可以避免页分裂。
  3. 在索引中查找数据时,减少比较的性能。

主键为什么要自增

因为索引结构 b+ 树,具有有序的特性,如果主键不是自增的,在进行增删数据的时候,会判断数据应该存放的位置,进行插入和删除,为了保持平衡,会对数据页进行分裂等操作移动数据,严重影响性能,所以主键需要是自增的,插入时,插入在索引数据页最后。

posted @ 2021-05-09 22:30  莫己若  阅读(489)  评论(0编辑  收藏  举报