引起索引失效的一些场景

 

  •    id是索引列,使用!=,索引没有失效,type为range,Extra为Using where;
explain SELECT * FROM sys.student where id != 1;

id是索引,使用索引返回一个范围中的行,通过过滤获取所需数据

  •    id是索引列,where条件使用了like且%%,索引失效
explain SELECT * FROM sys.student where id like '%张三%';

   id是索引列,where条件使用了like且右%,索引失效

explain SELECT * FROM sys.student where id like '张三%';

  • name不是索引,type 是all说明使用了全表扫描,possible_keys(可能可以利用的索引的名字)都为空,key(实际使用的索引)都为空

explain SELECT * FROM sys.student where name like '%张三%';

给name加上普通索引

explain SELECT * FROM sys.student where name like '张三%';

索引正常

explain SELECT * FROM sys.student where name like '%张三%';
explain SELECT * FROM sys.student where name like '%张三';

索引失效

 

你可能感兴趣的:(mysql)