2023年在太原,有次面试时,小伙问我explain,还问索引用什么树实现。怕我经历伪造的是不是,不过确实没用过,麻麻的
一 作用
不实际执行sql,而是展示查询计划
二 内容
explain select ....
id 每个select一行,值越大越优先,值相同则从上到下
select_type 类型, simple-简单查询 primary复杂查询的外层 subquery子查询 derived在from的子查询 union 在union后的select
table 表别名
partitions
type 访问类型 system>const(唯一键与常量比较)>eq_ref(唯一键用于关联条件)>ref(普通索引或部分唯一索引,用于条件或关联)>range(in、between、=条件使用索引)>index(扫描索引)>all(扫描全表),一般到range
possible_keys 可能用哪些索引
key 用了哪个索引
key_len 用了索引哪列
ref 索引用的常量或列名
rows 预估要读的行数
filtered
Extra
总结
explain(执行计划)包含的信息十分的丰富,着重关注以下几个字段信息。
①id,select子句或表执行顺序,id相同,从上到下执行,id不同,id值越大,执行优先级越高。
②type,type主要取值及其表示sql的好坏程度(由好到差排序):system>const>eq_ref>ref>range>index>ALL。保证range,最好到ref。
③key,实际被使用的索引列。
④ref,关联的字段,常量等值查询,显示为const,如果为连接查询,显示关联的字段。
⑤Extra,额外信息,使用优先级Using index>Using filesort(九死一生)>Using temporary(十死无生)。
着重关注上述五个字段信息,对日常生产过程中调优十分有用。