mysql不等于走不走索引_MySQL不走索引的情况(面试必备)

时间:2024-10-23 08:18:04

(2个及以上参数),单列索引a,where a in (xxxx) ,

如果参数是1个会用到索引,

如果参数是2个及以上不会用到索引。

或者in里是连续的参数,比如where fee in (1,2)、where fee in (1,2,3),fee是int类型并且有单列索引,依然不会使用索引.(包括int和varchar类型的字段)

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

3.条件中带有表达式,比如where num/2=100 或者 substring(a,1,3)='ab'或者age+10=30

4.条件中带有不等于,where id !=2 或者 where id <> 2

name is null

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

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

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

a 用到(

比如a> xxx

或者 a>=yyy

或者 a >xxx and a

或者 a between xxx and yyy 均会用到),

a > xxx or a

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的索引,

a in (w) and c in (x,y,...) 用到 a的索引,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用不到,

a and b in (x,y,....) 用不到,

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修改字段名、字段类型、添加删除字段、修改表名、表注释

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