SQL优化系列(二) EXPLAIN详解2

一、概述

在日常工作中,我们要看系统中有哪些慢SQL,会开启慢查询去记录一些执行时间比较久的SQL语句,但是这还没完,找到这些慢SQL后,我们要对这些SQL进行分析,比较常用的方法就是使用EXPLAIN去查看这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描等。上一期给大家介绍了EXPLAIN中id字段的含义,今天我们就带大家一起来学习后面的内容。

 

二、select_type    

select_type表示查询中每个select子句的类型,主要有以下几种:

(1) SIMPLE(简单SELECT,不使用UNION或子查询等)

 

(2) PRIMARY(子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)

 

(3) UNION(UNION中的第二个或后面的SELECT语句)

 

(4) DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)

 

(5) UNION RESULT(UNION的结果,union语句中第二个select开始后面所有select)

 

(6) SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)

 

(7) DEPENDENT SUBQUERY(子查询中的第一个SELECT,依赖于外部查询)

 

(8) DERIVED(派生表的SELECT, FROM子句的子查询)

 

(9) UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)

 

上一期的3个例子中,我们已经看到过了SIMPLE、PRIMARY、SUBQUERY、DERIVED,接下去我们再来看个UNION和UNION RESULT的例子

mysql> EXPLAIN SELECT * FROM t1
    -> UNION
    -> SELECT * FROM t2;
+----+--------------+------------+-------+---------------+------------+---------+------+------+-----------------+
| id | select_type  | table      | type  | possible_keys | key        | key_len | ref  | rows | Extra           |
+----+--------------+------------+-------+---------------+------------+---------+------+------+-----------------+
|  1 | PRIMARY      | t1         | index | NULL          | idx_t1_id2 | 9       | NULL |    9 | Using index     |
|  2 | UNION        | t2         | index | NULL          | idx_t2_id2 | 23      | NULL |   10 | Using index     |
| NULL | UNION RESULT | <union1,2> | ALL   | NULL          | NULL       | NULL    | NULL | NULL | Using temporary |
+----+--------------+------------+-------+---------------+------------+---------+------+------+-----------------+
3 rows in set (0.00 sec)

 

三、table

顾名思义,table表示的是这一步所访问数据库中表名称(显示这一行的数据是关于哪张表的),有时不是真实的表名字,可能是简称,例如上面的<union1,2>以及上一期中的<derived2>,也可能是第几步执行的结果的简称。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值