• mysql联合索引怎样才会命中


    写这篇文章是因为读到一篇关于联合索引在B+树上的存储结构和查找方式的文章

    https://www.cnblogs.com/ibigboy/p/12373978.html

    而做了一些相关的实验来验证猜想。

    下面来进行sql语句实验:

    1. select r.* from my_test r where r.a = '1' and r.b = '8' and r.c = 'a'; 该情景命中了索引

    2.select r.* from my_test r where r.a = '1' and r.c = 'a'; 该情景下也命中索引

    3.select r.* from my_test r where r.b = '8' and r.c = 'a'; 该情景下未命中索引

    4.select r.* from my_test r where r.a = '1' and r.b = '8' ; 该情景下也命中索引

    5.select r.* from my_test r where r.a = '1' ; 命中索引

    6.select r.* from my_test r where r.b = '8' ; 未命中索引

    7.select r.* from my_test r where r.c = 'a' ; 未命中索引

    总结:通过以上几种场景,凡是违背了最左前缀匹配原则的都未命中索引,创建了(a,b,c)三列联合索引,相当于创建了(a,b,c)、(a,b)、(a)三个索引,联合索引是首先使用多列索引的第一列构建的索引树,所以会丛a列开始查找,a列相同再找b列,以此类推。综上所述,能否命中索引,要结合是否满足最左前缀匹配原则来看。

  • 相关阅读:
    C语言指向指针的指针
    C语言注意事项
    C语言指针
    C语言字符串
    C语言数组
    C语言交换两个数的值
    C语言位运算符
    C语言各种进制输出
    C语言中各种进制的表示
    C 语言sizeof运算符
  • 原文地址:https://www.cnblogs.com/zy20160117/p/15994564.html
Copyright © 2020-2023  润新知