开发者学堂课程【MySQL 高级应用 - 索引和锁:索引优化2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8611
索引优化2
一、索引列上勿操作
不在索引列上做任何操作(计算、函数、(自动 or 手动)类型转换),会导致索引失效而转向全表扫描()。
我们输入:
mysql> SELECT * FROM staffs WHERE left
(NAME ,4)='July’;
注意这时在索引列上加入了 left 函数:
从结果看没有很大的变化,但:
mysql> SELECT * FROM staffs WHERE left
(NAME ,3)='July’;
此时便查不出了
explain
:
mysql> explain SELECT * FROM staffs WHERE NAME ='July’
;
此时并未发生什么改变。
如下图:
继续:
mysql> explain SELECT * FROM staffs WHERE left
(NAME ,4)='July’;
这时发现索引失效了,如上图,虽然结果看上去问题不大,但是索引时就有很大问题。注意索引列上少计算。