联合索引 |
这里加了KEY `idx_code_age_name` (`age`,`name`,`info`,), 索引 |
|
|
最左匹配原则 |
explain select * from user where age=21; |
用到了 |
第一个用了第一个age |
最左匹配原则 |
explain select * from user where age=21 and name="小明" |
用到了 |
第一个用了第一个age |
最左匹配原则 |
explain select * from user where age=21 and name="小明" and info="101"; |
用到了 |
第一个用了第一个age |
最左匹配原则 |
explain select * from user where age=21 and info="101"; |
用到了 |
第一个用了第一个age |
最左匹配原则 |
explain select * from user where name="小明"; |
失效了 |
第一个没用了第一个age |
最左匹配原则 |
explain select * from user where info="101"; |
失效了 |
第一个没用了第一个age |
最左匹配原则 |
explain select * from user where name="小明" and info="101"; |
失效了 |
第一个没用了第一个age |
|
|
|
|
有计算 |
explain select * from user where id=1; |
用到了 |
无计算 |
有计算 |
explain select * from user where id+1=2; |
失效了 |
有计算 |
|
|
|
|
函数 |
explain select * from user where height=22; |
用到了 |
|
函数 |
explain select * from user where SUBSTR(height,1,2)=22; |
失效了 |
|
|
|
|
|
|
code的类型是varchar |
|
|
字段类型不同 |
explain select * from user where code="101"; |
用到了 |
|
字段类型不同 |
explain select * from user where code=101; |
失效了 |
|
|
|
|
|
like左边包含% |
explain select * from user where code like "10%"; |
用到了 |
|
like左边包含% |
explain select * from user where code like "%1"; |
失效了 |
%在前面 |
like左边包含% |
explain select * from user where code like "%1%"; |
失效了 |
%在前面 |
|
|
|
|
列对比 |
explain select * from user where id=height |
失效了 |
|
|
|
|
|
|
id、height都有索引 |
|
|
or关键字 |
explain select * from user where id=1 or height="175"; |
用到了 |
|
or关键字 |
explain select * from user where id=1 or height="175" or address="广州"; |
失效了 |
3个索引都要加 |
|
|
|
|
in关键字 |
|
用到了 |
|
exists关键字 |
|
用到了 |
|
not in关键字 |
|
失效了 |
|
not exists关键字 |
|
失效了 |
|
|
|
|
|
order by |
explain select * from user order by code limit 100; |
用到了 |
因为有limit |
order by |
explain select * from user order by code; |
失效了 |
因为无limit |
order by |
explain select * from user order by code,age limit 100; |
用到了 |
因为有limit |
order by |
explain select * from user order by code,age; |
失效了 |
因为无limit |
order by |
explain select * from user order by code,age,name limit 100; |
用到了 |
因为有limit |
order by |
explain select * from user order by code,age,name; |
失效了 |
因为无limit |
order by |
explain select * from user order by code, height limit 100; |
失效了 |
code、height不是联合索引 |
order by |
explain select * from user order by code desc,age desc limit 100; |
用到了 |
都是降序/升序 |
order by |
explain select * from user order by code asc,age desc limit 100; |
失效了 |
一升一降 |