几道mysql面试题

1、为什么一定要设一个主键?

  因为不设主键,innodb也会帮你生成一个隐形列作为自增主键。反正都要生成主键,自己指定主键可以显示用上主键索引,提高查询效率。

2、主键是用自增还是UUID(随机)?

  自增。innodb住的主键是聚簇索引,如果主键是自增的,每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,一页写满后自动开新页。不是自增主键,可能会在中间插入,引发页的分裂,产生很多表碎片。相比之下,自增插入性能更好。

3、主键为何不推荐有业务含义?

  带有业务含义的主键可能会发生变更,引发页分裂,产生空间碎片。

4、表示枚举的字段为什么不用enum类型?

  enum类型的order by操作效率低,需要额外操作。

5、货币字段用什么类型?

  decimal,因为float和double是二进制存储,有一定误差,会导致精度失准。

6、为什么不直接存储图片、音频、视频等大容量内容?

  我们在实际应用中,都是用HDFS来存储文件,在mysql中只存放文件路径。因为myssl的大容量字段类型只有text和blob,但是mysql的内存临时表不支持text、blob这样的大数据类型,如果查询中包含这样的数据,在排序等操作的时候就不能使用内存临时表,必须使用磁盘临时表,导致查询效率缓慢。而且数据内容大会导致binlog内容多,主从同步靠binlog同步,会导致主从同步效率问题。

 

几道mysql面试题

上一篇:安装SQL2008 提示 创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se


下一篇:Could not find class XXX referenced from method XXX.