学习计划 mysql explain执行计划任务详解

我们在之前已经找到了需要优化的SQL,但是怎么知道它的那些方面需要优化呢?

explain就是为了这个使用的。

  explain显示了 mysql 如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

--

用法:

  在你的SQL前面套上explain就好了。

mysql> explain select * from rental;
+----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+
| id | select_type | table  | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra |
+----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+
|  1 | SIMPLE      | rental | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 16008 |   100.00 | NULL  |
+----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+
1 row in set, 1 warning (0.00 sec)

--

  ID

  SELECT识别符。这是SELECT的查询序列号。不重要,需要注意的是,不要把id当成执行顺序,这并不准确。

--

  SELECT_TYPE,TYPE 类型分为多种。

  SIMPLE 

    简单查询,指示非子查询和union的简单查询。

--

   TABLE 

   也就是所查询的表名。

--

  PARTITIONS

--

  TYPE

  最重要的列,显示连接了哪种类型。

  从最好到最差的连接类型为:const > eq_reg > ref > range > index > ALL

--

  POSSIBLE_KEYS

  显示可能应用在这张表上的索引,如果为空,则没有可能的索引。

--

  KEY

  实际使用的索引,如为空,则没有使用索引。

--

  KEY_LEN

  使用索引长度,在不损失精确性下,索引越短越好

--

  REF

  显示索引的那一列被使用了,如果坑你,是一个常数。

--

  ROWS

  mysql认为必须检查的,用来返回请求数据的行数。

--

这里只是做一个大纲,明天开始对各个细节开始做详细的学习。

posted @ 2018-03-25 21:44  Zzz哈  Views(170)  Comments(0Edit  收藏  举报