联合索引、覆盖索引和索引下推详解

组合索引

也称联合索引,相较于单字段索引,此索引对多个字段加索引。

最左匹配原则

加索引时对顺序敏感,(f1,f2,f3)查询时只能按顺序写,如下

where f1 like 'x%' and f2 = x and f3 = x

当然不按顺序写解释器也会帮我们改正顺序。

但也不是所有场景都能优化的,一般的原则是根据第一个字段精确查询,再根据第二个字段精确查询,依次类推。
一旦中间有一个模糊查询或者范围查询都会提前中断,导致后面的条件都用不到索引。
还有就是模糊查询一定要有前缀,否则也不走索引。
举个例子

-- f1模糊查询没有前缀,不能走索引
where f1 like '%x' and f2 = x and f3 = x
-- f1用到函数,不能走索引
where f1+1 = x and f2 = x and f3 = x

覆盖索引

减少一次回表查询,条件是查询的字段值就包含在索引中,还拿(f1,f2,f3)举例

-- 由于f3就在索引中,少了回表的操作
select f3 where f1 = x and f2 = x

索引下推

通过最左匹配原则我们知道有一个模糊匹配或者范围查询后,右侧的条件都不能走索引了,但是5.6的一个新特性可以支持继续向后走索引

-- 之前说f2就不能走索引了,由于索引下推则可以走索引了
where f1 like '%x' and f2 = x and f3 = x

https://blog.csdn.net/weixin_40650387/article/details/130127428

posted @ 2023-10-24 23:07  AlenYang  阅读(17)  评论(0编辑  收藏  举报