假设有如下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类型 存在转换
标签:name,age,索引,user,MySQL,失效,id
From: https://www.cnblogs.com/songdaxia/p/18108862