目录
给emp表中的ename字段添加索引

select * from emp where ename like '%T';
ename上即使添加了索引,也不会走索引。原因是因为在模糊查询当中使用“%”开头了!尽量避免模糊查询的时候以“%”开始。这是一种优化的手段/策略。
explain select * from emp where ename like '%T';

使用or的时候会失效,如果使用or那么要求or两边的条件字段都要有索引,才会走索引,如果其中一边有一个字段没有索引,那么另一个字段上的索引就会失效。所以这就是为什么不建议使用or的原因。
explain select * from emp where ename = 'KING' or job = 'MANAGER';

使用复合索引的时候,没有使用左侧的列查找,索引失效
什么是复合索引?
1.3.1 create index emp_job_sal_index on emp(job,sal);
添加复合索引 emp(job,sal)

1.3.2 explain select * from emp where job = 'MANAGER';
使用了索引

1.3.3 explain select * from emp where job = 'SALESMAN' and sal >= 1600;
使用了索引

1.3.4 explain select * from emp where sal = 800;
没有使用索引,索引失效

在where当中索引列参加了运算,索引失效。
1.4.1 create index emp_sal_index on emp(sal);
给emp表中的sal字段添加索引

1.4.2 explain select * from emp where sal = 800;

1.4.3 explain select * from emp where sal+1 = 800;

在where当中索引列使用了函数
explain select * from emp where lower(ename) = 'smith';

注意:唯一性比较弱的字段上添加索引用处不大。