mysql 面试知识点笔记(三)联合索引的最左匹配原则

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.最左前缀匹配原则,非常重要的原则,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索引 )

2.=和in可以乱序,比如a=1 and b=2 and c=3 建立(abc)索引可以任意顺序,mysql查询优化器会优化顺序

ps: 比如abc索引 那么只要查询条件有a即可用到abc索引(如abc ab ac a), 没有a就用不到。

B+tree 最左前缀匹配的成因:

mysql 面试知识点笔记(三)联合索引的最左匹配原则_第1张图片

先根据B+树 查找到col3的Alice叶子节点 然后再根据34/77进行其他条件筛选数据

最左前缀匹配成因:mysql 是创建复合索引的规则是根据索引最左边的字段进行排序,在第一个字段排序的基础上再进行第二个字段排序,类似于order by col1,col2… 所以第一个字段是绝对有序的 第二个字段就是无序的了,所以mysql 强调最左前缀匹配

 

转载于:https://my.oschina.net/pentakill/blog/3044508

你可能感兴趣的:(mysql 面试知识点笔记(三)联合索引的最左匹配原则)