EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE student.name LIKE'abc%';EXPLAINSELECT SQL_NO_CACHE *FROM student WHERELEFT(student.name,3)='abc';EXPLAINSELECT id, stuno, name FROM student WHERE SUBSTRING(name,1,3)='abc';EXPLAINSELECT id, stuno, NAME FROM student WHERE NAME LIKE'abc%';
2运算符导致索引失效
EXPLAINSELECT SQL_NO_CACHE id, stuno, NAME FROM student WHERE stuno+1=900001;EXPLAINSELECT SQL_NO_CACHE id, stuno, NAME FROM student WHERE stuno =900000;
3类型转换导致索引失效
name=123发生类型转换,索引失效。
EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE name=123;EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE name='123';
4范围条件右边的列索引失效
EXPLAINSELECT SQL_NO_CACHE *FROM student
WHERE student.age=30AND student.classId>20AND student.name ='abc';EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE student.age=30AND student.name ='abc'AND student.classId>20;
5不等于(!= 或者<>)索引失效
6is null可以使用索引,is not null无法使用索引
EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE age ISNULLEXPLAINSELECT SQL_NO_CACHE *FROM student WHERE age ISNOTNULL;
7like以通配符%开头索引失效
8OR 前后存在非索引的列,索引失效
EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE age =10OR classid =100;EXPLAINSELECT SQL_NO_CACHE *FROM student WHERE age =10OR name ='Abel';