参考:http://www.2cto.com/database/201307/230048.html
http://blog.csdn.net/zhuxineli/article/details/14455029
explain是用来分析mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
语句的执行顺序标识。是指select语句执行的顺序
简单类型,只要 语句中没有子查询或union。
EXPLAIN SELECT * FROM `fm_company`
最外面的select,在有子查询的语句中,最外面的select查询就是primary。查询关键字和主键无关
EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS t2 WHERE t2.`id` = 1)
union语句的后面那个 select 执行执行语句。
EXPLAIN SELECT * FROM `fm_company` AS t1 UNION SELECT * FROM `fm_company` AS t2
子查询中内层中第一个select语句。
EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS sub_t1 WHERE sub_t1.`id` = 148)
派生表(中间表)的查询语句
EXPLAIN SELECT * FROM ( SELECT * FROM `fm_company` AS t1 UNION SELECT * FROM `fm_company` AS t2 ) subQuery
子查询中union且为union中第二个select开始的后面所有select,依赖于外部的结果集。
EXPLAIN SELECT * FROM `fm_company` as t1 WHERE orgId IN( SELECT orgId FROM fm_company as sub_t1 WHERE sub_t1.`id` = 148 union SELECT orgId FROM fm_company AS sub_t2 WHERE sub_t2.`id` = 149 )
顾名思义就是 union中合并的结果
const是在where条件以常量作为查询条件,表中最多有一条记录匹配。由于是常量,所以实际上只需要读一次。
const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快
记住一定是用到primary key 或者unique,并且只检索出两条数据的 情况下才会是const。如下面这个sql。直接用主键id 查找
EXPLAIN SELECT * FROM fm_company WHERE id=148
EXPLAIN SELECT * FROM fm_company t1 ,fm_company t2 WHERE t1.id=t2.id
原文地址:http://blog.csdn.net/wei_ya_wen/article/details/42463705