语法:
EXPLAIN+SQL语句
EXPLAIN SELECT * FROM tb_item t1,tb_item_cat t2,tb_item_desc t3 WHERE t1.cid = t2.id AND t1.id = t3.item_id;
EXPLAIN SELECT * FROM tb_item t1 WHERE t1.id IN (SELECT t2.item_id FROM tb_item_desc t2);
关于id字段介绍:
id相同:执行顺序由上至下。
id不同:id值越大,越先被执行。
关于select_type字段介绍:
SIMPLE:普通查询类型。不包含子查询与UNION。
PRIMARY:嵌套查询,最外层的查询。
SUBQUERY:嵌套查询,里的子查询。
DERIVED:在FROM列表里包含的子查询被标记为DERIVED(衍生)。相当于建了一张临时表。
UNION:UNION查询。
UNION RESULT:2个UNION的合集。
关于table字段:查询表
关于type字段介绍:(查询性能由好到坏)
system
const:单表查询,通过主键id,union索引查询。
eq_ref:多表查询,唯一性索引扫描。
ref:非唯一性索引扫描。
range:只检索给定范围的行,使用一个索引来选择行。
index:查询的列是索引。
ALL:全表查询。
工作中需要达到range,最好是ref。
possible keys与key字段介绍:
key:实际使用到的索引。
possible keys:理论上用到的索引。
key_len字段介绍:
key_len:代表索引字段的长度。
ref字段介绍:
const:常量
所使用的索引字段:test.t1.id
rows字段介绍:
所需查询的行数。值越小越好。
extra字段介绍:
额外信息
Using filesort:
Using temporary:
Using index:使用索引。
Using where:
Using join buffer:
impossible where: