一、explain的id属性
1、id值相同时表示从上向下执行
2、id值相同被视为一组。
3、如果是子查询,id值会递增,id值越高,优先级越高。
例:在查询页面写下方的语句运行
EXPLAIN select * from test where policyno in(select policyno from test where brandname='宝马')
or brandname in(select brandname from test where useyears=10);
从explain结果上看,这个查询语句先执行id=3的子查询,即select brandname from test where useyears=10;
然后执行id=2select policyno from test where brandname='宝马' ;
最后执行外层id=1的主查询。
二、explain的select_type属性
1、SIMPLE:简单查询,只要不是子查询和union都属于简单查询
例:EXPLAIN select sumpremium from test where policyno='PDAA201321020000021564';
2、PRIMARY:复杂查询的最外层查询
3、DERIVED:from从句中的子查询
例:EXPLAIN select * from (select * from test limit 0,100) t;
4、SUBQUERY:在select或where从句中包的子查询
例:EXPLAIN select * from test where policyno in(select policyno from test where brandname='宝马')
5、UNION
例:EXPLAIN select * from test where brandname='宝马'
union select * from test where brandname='奔驰';
这里的PRIMARY代表着组合语句中的前一个查询,UNION代表着后一个查询,UNION RESULT代表着联合查询结果。