1.概念解释
1.回表
索引是非主键索引的时候,先根据该索引查询到主键索引,主键索引再去查询该主键对应的记录,这种操作叫回表。
2.覆盖索引
只查询索引值,不回表就是覆盖索引。
select B from table where B='xxx';
上文如果查询字段B这个字段恰好是索引,那么不需要去找主键索引,不需要回表就是索引覆盖。
3.最左匹配原则
比如你现在有三个列A,B,C你现在需要根据条件A查询 又要根据条件A+B查询那么你需要建几个索引。你只需要建一个组合索引:A+B 就可以满足上面两个需要,因为最左匹配原则,A+B的索引在走只有条件A的索引的时候,最左匹配原则就起作用了,A+B最左是A开始的所以A的条件也会走索引A+B,但是比如你的条件是根据B一个条件查询,就不会走A+B的索引,从前到后A在左边,B来的话从左边不满足最左匹配原则。所以不走索引A+B。
4.索引下推
就是在复合索引里面先过滤一遍 完了之后再回表,就是减少io次数。只适合复合索引,比如没有索引下推,复合索引每个单独去回表匹配记录,比如A+B的复合索引,没有下推,先匹配A的索引回表,再匹配B的索引回表,如果索引下推,就是在执行复合索引A+B的时候先把不满足的条件过滤掉,只留下满足的条件,在索引这一层过滤,完了再回表。减少回表的IO次数。