一、是什么(查看执行计划)
二、能干嘛
三、怎么玩
Explain+SQL语句
3.1 id
select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。
三种情况:
1.id相同,执行顺序由上至下
上图,id都是1,那么查询的顺序是table字段下的顺序,t1, t3, t2
2.id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
3.id相同不同,同时存在
上图第一行的derived2,表示衍生表。其中的2表示id为2,也就t3衍生的表。
3.2 select_type
3.3 table
显示这一行的数据是关于哪张表的
3.4 type
1.system
2.const
3.eq_ref
4.ref
5.range
6.index
7.all
3.5 possible_keys
比如这个表一共建了4个索引。一条sql来了,分析器分析一下,认为可能有2个索引能用上。
3.6 key
3.7 ken_len
3.8 ref
3.9 rows
3.10 Extra
和面试官说或者在工作中:id、type、key、rows、Extra这5个很重要
重要的是前3个
如果显示了Using filesort,性能就不好。
group by尽可能按照索引的顺序和个数来。
不可能name='July'并且name='z3', 所以,这个where不可能。