explain 用法详解

explain < table_name >
例如:

explain select * from t3 where id=3952602;
二、explain输出解释
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
1 id
SQL执行的顺利的标识,SQL从大到小的执行。

例如:

mysql> explain select * from (select * from ( select * from t3 where id=3952602) a) b;
+----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+
| id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
+----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+
|  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  2 | DERIVED     | <derived3> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
|  3 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
+----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+
很显然这条SQL是从里向外的执行,就是从id=3 向上执行。

2 select_type
就是select类型,可以有以下几种

(1SIMPLE

简单SELECT(不使用UNION或子查询等)。

例如:

mysql> explain select * from t3 where id=3952602;
 +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
 | id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
 +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
 |  1 | SIMPLE      | t3    | const | PRIMARY,idx_t3_id | PRIMARY | 4       | const |    1 |       |
 +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+2PRIMARY

就是最外层的select。

例如:

mysql> explain select * from (select * from t3 where id=3952602) a ;
 +----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+
 | id | select_type | table      | type   | possible_keys     | key     | key_len | ref  | rows | Extra |
 +----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+
 |  1 | PRIMARY     | <derived2> | system | NULL              | NULL    | NULL    | NULL |    1 |       |
 |  2 | DERIVED     | t3         | const  | PRIMARY,idx_t3_id | PRIMARY | 4       |      |    1 |       |
 +----+-------------+------------+--------+-------------------+---------+---------+------+------+-------+3UNION

UNION中的第二个或后面的SELECT语句。

例如

mysql> explain select * from t3 where id=3952602 union all select * from t3 ;
 +----+--------------+------------+-------+-------------------+---------+---------+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值