在MySQL的索引策略中,最左前缀匹配原则是一个关键概念。当构建联合索引时,数据库会优先使用索引的最左边字段进行匹配,这就是所谓的"最左优先"。理解这一点有助于优化查询性能。 索引的基础是B+树,联合索引的B+树节点存储键值对。由于B+树依赖单个字段确定索引关系,所以查询时会按照联合索引的最左边字段进行排序。举个例子,创建(a, b)联合索引,索引树的构建就会基于a字段的有序性。 尽管a字段值有序,b字段值无序,但MySQL的查询优化器会遵循规则:首先按最左边字段排序,然后基于第二个字段。这意味着像b=2的查询条件无法利用索引,因为没有遵循最左匹配原则。 在理解了explain中的type字段和key_len字段后,我们可以进一步分析查询效率。type字段列出了查询类型,从最优(如const和eq_ref)到最差(如ALL)都有。key_len则显示了使用的索引长度,有助于判断使用了哪个索引。 举例中,创建索引后,对于不同的查询条件,如全值匹配、最左边列匹配、范围查询和列前缀匹配,查询优化器会根据最左匹配原则选择或调整索引使用。不遵循最左匹配原则的查询可能会导致索引失效,但查询优化器会根据实际数据结构决定采用全索引扫描或其他策略。 对于字符型id的前缀匹配,部分查询会利用索引,而部分则需要全表扫描。至于范围查询,如果能遵循最左匹配,将利用索引,否则可能使用全索引扫描。 最后,当查询同时精确匹配第一列并范围匹配其他列时,即使其他列无序,数据库仍会优先使用最左边的索引。



































