Cocoon

懒惰先生

MySQL之什么情况下不走索引

1.用 != 或者 <> 导致索引失效

2.字段类型不一致导致的索引失效

3.字段编码类型不一致进行关联查询不走索引;如:

SELECT * FROM a表  inner join b表  on a表.A字段=b表.B字段  ’;
如果a表的A字段编码类型是utf8,b表B字段编码类型是utf8mb4,这是不走索引的。

4.函数导致的索引失效;如:
SELECT * FROM table WHERE DATE(create_time) = ‘2021-09-03’;
如果使用函数在索引列,这是不走索引的。

5.运算符导致的索引失效;如:
SELECT * FROM table WHERE height/100 = 20;
如果你对列进行了(+,-,*,/,!), 那么都将不会走索引。

6.OR引起的索引失效;如:
SELECT * FROM table WHERE name = ‘张三’ OR height = ‘175’;
OR导致索引是在特定情况下的,并不是所有的OR都是使索引失效,如果OR连接的是同一个字段,那么索引不会失效,反之索引失效。

7.模糊搜索导致的索引失效;如:
SELECT * FROM table WHERE name LIKE ‘%五’;
当%放在匹配字段左边是不走索引的,

SELECT * FROM table WHERE name LIKE ‘张%’;

放在右边才会走索引。

8.NOT IN、NOT EXISTS导致索引失效

posted @ 2022-07-29 11:28  我怕写文章  阅读(2176)  评论(0)    收藏  举报