组合索引命中问题(萌新没有币求大佬不吝赐教)

现有组合索引index(a,b,c) 那么以下语句哪个会命中索引

1、where c = 1, b = 2, a = 3;

2、where b = 1, a > 2, c = 3;

3、where c = 3, a > 2, b = 1;

http://nga.178.com/read.php?tid=15788480&forder_by=postdatedesc

首先,不说命中的问题,你写的有点不友善,不太清晰,为什么不加and呢,不加and呢,然后回答你的问题,组合索引的意思是必须用到前面的索引,后面的才可以用,也就是说第一条只用到a索引,第二条也是一样,第三条用到ab两个,因为都要从a开始才可以的,如果有一条语句是where a = 1 and b > 2 and c < 3,那么他会用到整个组合索引,如果b不在a之后,那么b永远不会用到索引,c也是一样,如果b的索引没有用到,就算c在b之后也不会用到索引

这就相当于按照a,b,c分别排序,在a排好序的情况下,再对b进行排序,a和b都排好再排c,所以你使用索引的时候得先用到a,才能使用b,使用到a和b,才能用c,最左原则。