不要在索引列上做任何计算
不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。
1 在查询列上使用了函数
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE age=30;
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE LEFT(age,3)=30;
结论:等号左边无计算!
2 在查询列上做了转换
create index idx_name on emp(name); |
explain select sql_no_cache * from emp where name=’30000′; |
explain select sql_no_cache * from emp where name=30000; |
字符串不加单引号,则会在name列上做一次转换!
结论:等号右边无转换!