开发者学堂课程【MySQL 高级应用 - 索引和锁:索引优化5】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8615
索引优化5
一、 mysql 在使用不等于(!=或者<>)的时候无法使用
索引会导致全表扫描
理论上可以用 possible-keys ,而实际上用的是 key
如下:
rysq1» explain select * from staffs where name-'July' ;
select. type i table I type 1 possible keys
key
key_1en I ref 1 rows 1 Extra
SIMPLE
staffs i ref i idx. staffs nameAgePos i idx. staffs nameAgePos i 74
constI 1 1 using where
in set (0.00 sec)
mysq1> explain select * from staffs where nane != July';
select. _type I table I type I possible keys I key I key_len I ref I rows I Extra
SIMPLEI staffs I ALLI idx staffs nameAgePos I NULL I NULLI NULLI 5I using wherel
set (0.00 sec)
mysq1> explain select * from staffs where name o 'July' ;
select type 1 tabletype 1 possible keys
key 1 key_len 1 ref
SIMPLEI staffs I ALL 1 idx staffs nameAgePosNULL I NULL
NULL
in set (0.00 sec)
不要因为索引失效而不去写,而要知道会有这种情况也依旧要去写。因为具体要看市场环境、业务、技术,具体问题具体分析。
比如有些表数据非常少,而且各种的特殊的历史原因或者极端的需求下面,即便索引失效了,这个时候也要不得已而为之。