1.学习了mysql联合索引,以及联合索引使用的注意事项。
联合索引:MySQL中使用多个字段同时建立一个索引联合索引。
在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序一次使用,否则无法命中索引。
在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。
具体原因为:
MySQL使用索引时需要索引有序,如建立了"name,age,school"的联合索引,索引的排序为: 先按照name排序,如果name相同,则按照age排序,如果age的值也相等,则按照school进行排序。
当进行查询时,此时索引仅仅按照name严格有序,因此必须首先使用name字段进行等值查询,之后对于匹配到的列而言,其按照age字段严格有序,此时可以使用age字段用做索引查找,以此类推。因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。此外可以根据特例的查询或者表结构进行单独的调整。
优点:前缀索引能使索引更小,更快的有效办法。
缺点:mysql无法使用其前缀索引做ORDER BY和GROUP BY,也无法使用前缀索引做覆盖扫描。