最左前缀匹配原则:
- 在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先.
在检索数据时从联合索引的最左边开始匹配,Mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配了.
就比如a=3 and b=4 and c>5 and d=6如果建立(abcd)顺序的索引,d就用不到索引了,如果建立(abdc)的索引则都可以用到索引,其中abd的顺序可以任意调整,因为查询优化器会重新编排(即使是c>5 and b=4 and d=6 and a=3也会全部用到 abdc索引 ). =和in可以乱序,比如a=1 and b=2 and c=3建立(abc)索引可以任意顺序,mysql查询优化器会优化顺序.
这里需要注意下, 比如abc索引 那么只要查询条件有a即可用到abc索引(如abc ab ac a),没有a就用不到。
最左前缀匹配成因:Mysql是创建复合索引的规则是根据索引最左边的字段进行排序,在第一个字段排序的基础上再进行第二个字段排序,类似于order by col1,col2…所以第一个字段是绝对有序的 第二个字段就是无序的了,所以Mysql 强调最左前缀匹配.
MySQL在建立联合索引时遵循最左前缀匹配原则,检索时从索引最左边开始匹配。如果查询条件包含范围查询,如>、<、between、like,匹配将停止。查询优化器可以重新排列字段顺序以优化索引使用。例如,对于(a,b,c,d)的索引,条件a=3且b=4且c>5且d=6,无论怎样排列,abc字段都能被利用,而d可能无法利用。最左前缀匹配原则源于索引按最左边字段排序的创建方式。

4475

被折叠的 条评论
为什么被折叠?



