MySQL索引失效

假设有如下user表字段:使用mysql8

字段 类型 说明
id bigint 主键
name varchar(30) 姓名
age int 年龄

聚合索引设置为(age,name)

1最佳左前缀法则---必须先使用前面字段,不能越过前面的字段使用后面的字段

1.1 范围条件右边的索引失效

1.2 不等于(!= 或者<>)索引失效

1.3is null可以使用索引,is not null无法使用索引

1.4like以通配符%开头索引失效

1.5 OR 前后存在非索引的列,索引失效

SELECT id,name,age FROM user WHERE name="s";
#对于这段SQL代码是不走索引的 越过了age

2 对索引字段进行了 计算,使用函数,类型转换

SELECT id,name,age FROM user WHERE  age+1=19 #使用了计算
SELECT id,name,age FROM user WHERE LEFT(name,3)='son'# 使用了函数
SELECT id,name,age FROM user WHERE name=12 #name为varcha类型 存在转换
posted @ 2024-04-01 16:50  睡觉觉苏  阅读(3)  评论(0编辑  收藏  举报