MySQL可以使用多个字段建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序逐个使用,否则无法命中索引。
例如:如果在MySQL中建立了如下字段:name、age、school的联合索引,那么索引的顺序为:先按照name排序,如果name相同,再按照age排序,如果age的值也相等,则再按照school进行排序。
进行查询时,因为索引仅仅按照name严格有序,所以必须首先使用name字段进行等值查询,对于匹配到的这些列,因为它们按照age字段严格有序,此时可以再使用age字段作为索引进行二次查找,以此类推。
因此在建立联合索引的时候应该注意索引列的顺序,一般情况下可以将查询需求频繁或者字段选择性高的列放在前面。