一:背景
我们在面试中都知道,对于MySQL索引是必问的。大家也应该都知道MySQL的数据结构,什么是索引。其中在面试中,面试官也经常问,你做过哪些优化?本文主要是介绍MySQL索引的一些常见术语,比如索引下推、索引覆盖、最左匹配等,这些其实也是MySQL优化的一部分,能够熟练运用也是可以提升MySQL性能。
二:索引常见术语
2.1 聚簇索引和非聚簇索引
聚簇索引:数据和索引存储在一起,数据访问更快、叶子节点逻辑连续的所以排序、范围查找会更快。InnoDB的主键索引我们叫做聚集索引
innodb存储引擎在进行插入数据的时候,数据必须跟某个索引列存储在一起,这个索引列可以是主键,如果没有主键,选择唯一健,如果没有唯一健,选择6字节的rowid(隐藏列)来进行存储。
数据必定是跟某个索引绑定在一起的,绑定的索引叫聚簇索引(innodb只有主键索引才是聚簇索引)。
其他索引(辅助索引)的叶子存储的数据不再是一整行记录,而且聚簇索引的id值。所以聚簇索引保存数据,辅助索引加快查询速度。
非聚簇索引:数据和索引存储没有存储在一起;MYISAM的是非聚集索引,索引和数据是分开存储的