倒数第二个不懂,求解释,谢谢

解决方案 »

  1.   

    b>10 , b like 'xxxx'% 是一个范围, 不是具体的值, 接在后面的都用不了索引
      

  2.   

    既然是面试题,你应该直接问一下你的面试官
    照我看来,如果没有进一步的限制条件或考核目的,那么所有的情况都能用索引的
    如你的倒数第2个,如果单从检索效率来讲索引的使用:
    先按照他的说法能成立的情况来理解, c 不能用索引:
    难道判断 c 成立的条件还要关联原表去去一次数据?那样的效率比直接在索引上判断效率差吧?你可能会说反正也要关联原表取数据,但我也可以说,你没有给查询列,如果查询列不需要关联原表呢?
    就算 c 有索引,你又如何确保 ab 条件直接索引 + c 条件走索引 再并集的结果就一定比 abc 索引效率高?比如 a,b能过滤大量数据,c不能过滤数据,很显然分开走效率会列差
    -----------------------
    所以最终的结论是,你应该问面试官,看他的考核目的
      

  3.   

    mysql的联合索引的特点决定的啊联合索引最左前缀匹配原则是非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到