2.MySQL面试题2
一.索引
1.索引定义:
索引相当于音序表,给字段排序了
2.分类:
主键,唯一,普通,组合,全文
3.最左匹配原则(最左优先,从最左边的字段开始,任何连续的字段都能匹配上索引。同时遇到范围查询(>、<、between、like)就会停止匹配。)
(1)定义:从组合索引的最左边字段开始匹配索引
(2)对于组合索引,数据库是按照最左边的字段构建B+树的
(3)不符合最左匹配原则导致索引失效的情况
1.查询条件不以第一个字段开始
2.查询条件中字段不连续
3.遇到范围查询会停止匹配
4.在查询字段上进行了计算。如果查询条件中含有函数或者表达式,这会导致索引失效
5.like 要注意一下:如果通配符% 不出现在开头,则可以走索引。(“value%” 可以使用索引,但是 like “%value%” 违背了最左匹配原则,不会使用索引,走的是全表扫描。)
(4)索引要遵循最左匹配原则的原因是数据库是用B+树构建索引的
二.存储引擎
1.InnoDB和MyISAM的区别
(1)事务和崩溃修复:InnoDB支持,MyISAM不支持
(2)外键:InnoDB支持,MyISAM不支持
(3)行级锁:InnoDB支持,MyISAM不支持。nnoDB 支持表级锁和行级锁,默认为行级锁,MyISAM 只有表级锁
(4)聚簇索引:InnoDB支持,MyISAM不支持
2.访问速度,MyISAM更快