MySQL常见面试题01
1、B树跟B+树的区别?
MySQL为什么选择B+树来存储索引?
层数低,可以存放的数据多
2、InnoDB和MyISAM的区别?
i:天生支持行锁,手动支持表锁,有事务,索引和数据一起存储
m:支持表锁不支持行锁,无事务,索引和数据分开存储
3、为什么非主键索引的叶子节点存放的数据是主键值
避免索引数据量过大,根据主键回表查询本身就很快
4、为什么InnoDB表必须创建主键
因为如果不创建主键,会自动维护一个rowId作为主键,效率很低
5、为什么使用主键时推荐使用整型的自增主键
整形方便排序,适合搭建索引树,自增主键每次增加都在树的末尾增加即可,减少旋转次数
6、索引可能失效的情况
1,is null/is not null
2,范围查询右侧
3,左%like
4,使用函数
5,对索引列进行计算
6,使用!=
7,不满足最左前缀法则
8,字符串不加’’
9,in 或 or 范围过大