暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql 不走索引的情况

程序员实用技能 2021-07-22
418
  1. in(2个及以上参数) ,单列索引a,where a in (xxxx) ,如果参数是1个会用到索引,如果参数是2个及以上不会用到索引(包括int和varchar类型的字段)

  2.  like '%abc' 或者 like‘%abc%’

  3. where num/2=100 或者 substring(a,1,3)='ab'或者age+10=30

  4.  where id !=2 或者 where id <> 2

  5.  where name is null

  6. not in ,单列索引a ,where a not in (xxxxx) ,不管里面是一个还是多个参数都用不到a的索引(包括int和varchar类型的字段)

  7. 字符类型的字段与数字比较 (数字类型的字段与字符比较会用到索引)

  8. 单列索引a , where条件中 :

    a 用到(比如a> xxx 或者 a>=yyy 或者 a >xxx and a <yyy 或者 a  between xxx and yyy  均会用到),

    a > xxx or a <yyy 用不到。(包括int和varchar类型的字段)

  9. 单列索引a,单列索引b,单列索引c,where条件中 :

    a or b 均用不到,

    a or b or c 均用不到,

    a and b 用到 a的索引,

    a and b and c 用到a的索引,

    c and b 用到b的索引(谁的索引定义在前面用谁的),

    (a and b ) or c 均用不到,

    (a or b ) and c 用到c的索引

  10. 复合索引a-b-c,where条件中 :

    a用到,

    a and b用到,

    b and a用到,

    a and c用到,

    c and a用到,

    a and b and c用到,

    c and b and a用到,

    b用不到,

    c用不到,

    b and c用不到,

    c and b用不到,

    a or b用不到,

    b or c用不到,

    a or b or c用不到,

    (a or b) and c用不到,

    (a and b) or c用不到,

    (a or d) and b and c 用不到


当前版本:

    mysql> select version() ;
    +-----------+
    | version() |
    +-----------+
    | 5.7.28 |
    +-----------+
    1 row in set (0.00 sec)


    历史文章:

    Mysql查询年的第多少周

    Mysql,replace into,存在则更新,不存在则插入

    Mysql修改字段名、字段类型、指定位置添加字段、删除字段、修改表名、表注释


    「欢迎关注,一起学习,一起进步」

    文章转载自程序员实用技能,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论