联合索引是什么?为什么需要注意联合索引中的顺序?
Mysql可以使用多个字段同时建立一个索引,叫做联合索引,在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序使用,否则无法命中.
具体原因:
Mysql使用索引时需要索引有序,假设现在建立了name,age,school,的联合索引,那么索引的排序为:先按照name排序,如果name相同在按照age排序,如果age相同在按照school排序.
当进行查询时,此时索引仅仅按照name严格有序,因为必须首先使用name字段进行等值查询,之后对于匹配到的列而言,其按照age字段严格有序,此时可以使用age字段用作索引查找,一次类推,因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面,此处可以根据特例的查询或者表结构进行单独的调整.