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

组合索引

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

最左匹配原则

加索引时对顺序敏感,(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 @   AlenYang  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示