24. 看看where a=2 and c=3的数据都有哪些?
只能用到第一个字段,然后扫描索引的范围就变成了:
同理,你是否理解了这句话呢:组合索引中,范
围查询字段后面的其它字段,都用不到索引。
假如索引(A,B,C)
Select ……
Where A=1 and B>=2 and B<=3 and C=3;
索引只能用两个字段(A,B)。
4.3 最左前缀
为什么索引要符合最左前缀:
索引扫描需要先确定起点和终点!(Oracle的一种特殊情况除外~)
MySQL所有索引扫描都是要先确定一个起点和终点。Oracle有一个例外,就是index skip scans
组合索引的实际应用:(A,B,C)
A=val1 and B=val2 and C=val3;
A=val1 and C=val2;
B=val1 and C=val2;
A=val1 and B>val2 and B<val3 and C=val4;
A like 'aaa%' and B=val2;
A like '%aaa' and B like 'bbb%';
A + n=val1 and B=val2;