联合索引、覆盖索引和索引下推详解
组合索引
也称联合索引,相较于单字段索引,此索引对多个字段加索引。
最左匹配原则
加索引时对顺序敏感,(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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!