索引失效常见原因:
1、全值匹配我最爱
2、最佳左前缀法则
3、不在索引列上作任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
4、存储引擎不能使用索引中范围条件右边的列
5、尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *
6、mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
7、is null,is not null也无法使用索引
8、like以通配符开头(‘%abc…’)mysql索引失效会变成全表扫描的操作
9、字符串不加单引号索引失效
10、少用or,用它来连接时会索引失效
create table staffs(
id int primary key auto_increment,
name varchar(24) not null default '' comment '姓名',
age int not null default 0 comment '年龄',
pos varchar (20) not null default '' comment '职位',
add_time timestamp not null default current_timestamp comment '入职时间'
)charset utf8 comment '员工记录表';
#插入数据
insert into staffs (name,age,pos,add_time) values('z3','22','manager',now());
insert into staffs (name,age,pos,add_time) values('july','23','dev',now());
insert into staffs (name,age,pos,add_time) values('2000','23','dev',now());
#建立索引
alter table staffs add index idx_staffs_nameAgePos(name,age,pos);