表里有字段 a,b,c,d
现有联合索引(a,b,c),唯一索引 (d)
select a,d frm student;
explain 查看执行计划,type=all
这是因为觉得直接通过聚集索引去获取a,d的字段比较繁琐,直接用全表扫描去获取吗?
跟select * from student 一样的原理吗?
###走不走索引主要看 where 涉及的字段,不是看 select 涉及的字段
###如果你直接 select d from student
,那么会走索引,我们知道Mysql的索引是B+ tree,索引中包含了d的字段,所以可以直接从索引中获取d字段。
但是当你加了a字段后,一种方式是把所以的d字段对应的主键去扫表,第二种方式直接去扫全表。
对比后,Mysql肯定会选择第二种方式更加的高效。