注意:主键字段会建一棵b+树作为索引,联合索引也会建一颗b+树作为索引,建立两套索引
比如(a,b,c)三个字段组成一个联合索引
select XXXXX where a=1 and b=1 and c=1 会走索引
select XXXXX where a=1 and b=1 会走索引
select XXXXX where b=1 and c=1 不会走索引
select XXXXX where a=1 and c=1 不会走索引
b=2 and a= 1当你的sql是这样的情况下依然可以匹配索引,原因是MySQL有优化器会自动调整a,b的顺序与索引一致,但是当你执行b=2的时候就匹配不到索引
当遇到范围查询(>,<,between,like这四个就是范围查询),后面的字段就不会走索引
select XXXXX where a=1 and b>3 and c=3 a和b能走索引,而c无法使用索引,因为b字段用到了范围查询>,所以b字段后面的c字段就不会走索引
同理 select XXXXX where a>1 and b=2 ,a可以走索引,但是由于a字段用到了范围索引,所以b字段不会走索引
将name,age,position三列组成一个联合索引