美文网首页
Mysql 索引最左匹配原则

Mysql 索引最左匹配原则

作者: answer6 | 来源:发表于2021-09-20 17:18 被阅读0次

    假设建立这样一个联合索引
    KEYidx(name, age, postion) USING BTREE


    • 索引的本质是帮助MYSQL高效获取数据的排好序数据结构(一般都是B树)从左到右依次递增,非int类型字典排序。
      底层存放示例

    他是按照索引的字段,第一个字段排序,相等的话,则看第二个字段比较大小。所以如果查询条件跳过第一个字段,直接查询第二、第三,或者是第三字段的话,那么这个是无序的,自然用不了索引。

    --  如果联合索引是 INDEX `idx`(`realname`, `mobile`, `phone`) USING BTREE (注意和上面的案例图片不是一个表,但是索引结构相同)
    EXPLAIN SELECT * FROM zt_user WHERE realname = 'lin' AND mobile = '1732100' AND phone = '123@qq.com';
    
    EXPLAIN SELECT * FROM zt_user WHERE mobile = '1732100' AND phone = '123@qq.com';
    
    EXPLAIN SELECT * FROM zt_user WHERE phone = '123@qq.com';
    

    explain后的执行情况是:

    结果一
    结果二
    结果三

    mysql 的索引最左原则就很清晰了。索引多个字段,会按照字段顺序依次比较大小建立索引,如果跳过这个顺序的话,则索引失效。前提是没有其他索引进行影响

    相关文章

      网友评论

          本文标题:Mysql 索引最左匹配原则

          本文链接:https://www.haomeiwen.com/subject/sqemgltx.html