- 非聚集索引:Myisan引擎为非聚集索引,索引文件在MYI文件,数据不在叶子节点,在MYD文件,分开存放;
- 聚集索引:Innodb引擎为聚集索引,所有数据都在叶子节点,一起存放在ibd文件,也叫做一级索引;
- 二级索引:除一级索引外建立的索引为普通索引,也叫二级索引;
- 回表:二级索引叶子节点只有主键,需要其他信息需要再走一遍聚集索引,这样叫做回表;
- 索引覆盖:走二级索引,再走主键索引,走两次B+tree,性能下降,需要覆盖索引,即建立联合索引,把需要的信息联合建立索引,这样叫做索引覆盖;
关于一级索引的建立:
- 如果表上定义有主键,该主键索引就是聚簇索引。
- 如果未定义主键,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚簇索引。
- 如果没有这样的列,InnoDB就自己产生一个这样的ID值,它有六个字节,而且是隐藏的,使其作为聚簇索引。
最左匹配原则:
最左匹配原则都是针对联合索引来说的,所以我们有必要了解一下联合索引的原理。了解了联合索引,那么为什么会有最左匹配原则这种说法也就理解了。
我们都知道索引的底层是一颗B+树,那么联合索引当然还是一颗B+树,只不过联合索引的健值数量不是一个,而是多个。构建一颗B+树只能根据一个值来构建,因此数据库依据联合索引最左的字段来构建B+树。
点这里一
点这里二