开发者学堂课程【MySQL 高级应用 - 索引和锁:索引优化3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8612
索引优化3
一、索引中范围条件
存储引擎不能使用索引中范围条件右边的列。
输入:
mysql> EXPLAIN SELECT * FROM staffs WHERE NAME ='July' AND age=25 AND pos='manager'
;
得到:
看到没有变化,这时改变一下:
mysql> EXPLAIN SELECT * FROM staffs WHERE NAME ='July' AND age > 25 AND pos='manager'
;
我们得到:
Type 是 ref 的访问级别,NAME 用于查询。
从范围和长度看出来上一 type 是 ref,而到下一 type 变成 range,这时范围本身 age 索引时已用到,所以索引用到了 NAME 和 age,但是此时age用到了排序, NAME 去查找,但25之后 pos 都没用到,这就是范围之后全失效。
那么上图就可以看到 key-len74、78,说明 age 有被用到排序。NAME 用到了查找。