请教老师关于联合索引的问题

来源:7-16 【实战】 分析SQL的执行计划-[type列]续

慕仔8930017

2020-07-10

我在一张表上 a b 两列建立联合索引

select * from test where b=0;
这句sql查看执行计划type是index,根据联合索引的特征,这句应该是没有走到索引的

select * from test where a=0 or b=0;
select * from test where a>0 or b=0;
select * from test where a>0 and b=0;

这三句sql查看执行结果type都是index,是不是说明这几种情况都是没有走到索引的?如果不是怎么从执行计划中看出哪些字段走了索引,哪些字段没有走索引呢?
谢谢老师!

写回答

1回答

sqlercn

2020-07-10

 可以使用explain 命令看一下key列的输出就可以看出SQL是否使用的索引了。

0
4
sqlercn
回复
慕仔8930017
如果一个索引中包括了查询所需要的所有列,那么就会使用覆盖索引对查询进行优化,所以就算不附合最左匹配的原则也可以用到索引。
2020-07-11
共4条回复

零基础入门 详解企业主流数据库MySQL8.0

掌握SQL优化与慢查询优化,具备独当一面的能力

1641 学习 · 485 问题

查看课程