走当前索引就足够,而无需回表就能找到所有数据,就叫覆盖索引。
比如 key1 上有索引。(它是一个普通的二级索引)。
那么select key1 from s1 where key1 = 'a'
这种就叫覆盖索引。
表现就是explain时, Extra 那里显示 using Index
为啥无需回表?因为b+树子节点上,存了该索引字段和主键。而此时找的就是该字段,所以无需回表使用聚簇索引,这种就叫覆盖索引。
如果写成select * from s1 where key1 = 'a'
这种就不是覆盖索引,因为其他字段没有索引,它需要回表(回去使用聚簇索引,再找一遍数据)。表现就是explain时,Extra 那里 是null。