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导致索引失效


浙公网安备 33010602011771号