掌握专业技能很重要,如何合理清晰的回答面试官的问题也很重要,这里只记录面试的话术,不对知识做扩展讲解,可以直接答给面试官。
mysql 为什么建议 innodb 表要建一个主键?
在 mysql 的数据存储中 idb 文件中,要使用一颗聚簇索引来维护一个 b+ 树保存数据,那么 mysql 在组织索引的时候,会依赖唯一id,有下列几种情况:
- 如果有一个主键,可以直接使用主键建索引
- 如果没有主键,会从第一列开始选择一列所有值都不相同的,作为索引列
- 如果没有选到唯一值的索引列,mysql 会帮忙建立一个隐藏列,维护一个唯一id,以此来组织索引
那么为了避免 mysql 选择索引列和建立隐藏列的性能损耗,建议手动建立一个主键。
为什么推荐使用整形作为主键
- 使用整形作为主键相比字符型可以节省数据页的空间。
- 构建索引 b+ 树时,为了保证索引的有序性,使用整形可以避免页分裂。
- 在索引中查找数据时,减少比较的性能。
主键为什么要自增
因为索引结构 b+ 树,具有有序的特性,如果主键不是自增的,在进行增删数据的时候,会判断数据应该存放的位置,进行插入和删除,为了保持平衡,会对数据页进行分裂等操作移动数据,严重影响性能,所以主键需要是自增的,插入时,插入在索引数据页最后。
人的潜力是可以激发的,比如说你给我50斤的砖我可能拎不动,但你要是给我100斤的人民币我肯定拎起来就跑。