MySQL EXPLAIN 实践汇总

MySQLEXPLAIN可以显示估计查询语句执行计划,从中可以分析查询的执行情况是不是最优,这有助于我们对不使用索引的查询进行优化。EXPLAIN对于每个查询语句返回一行信息,它列出了一个有序的表格,MySQL处理语句的时候会读取他们。MySQL解决所有的连接都使用嵌套连接方法。这意味着MySQL读取第一张一行,然后匹配第二张表的所有行,第三张表或更多表都如此。当所有的表在处理时,MySQL会输出已经查询出来的列,并且回溯到表继续查找直到所有的行被找到,从该表读取下一行,直到程序继续处理下一张表。




当使用关键词 EXTENDED 时,EXPLAIN 会处理通过 SHOW WARNINGS 看到的一些而外信息。EXPLAIN EXTENDED 也会显示这些滤出的列。

语法:

EXPLAIN ;

不使用 extended 和使用extended 的分析情况:

mysql> explain select tid from tabname;
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table   | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | tabname | index | NULL          | tid  | 5       | NULL |    3 | Using index |
+----+-------------+---------+-------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

mysql> explain extended select tid from tabname;
+----+-------------+---------+-------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table   | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+---------+-------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | tabname | index | NULL          | tid  | 5       | NULL |    3 |   100.00 | Using index |
+----+-------------+---------+-------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

可以看到,使用 extended 时,输出的最下面多了 1 条警告。 此时可以用  show warnings 来查看:

mysql> show warnings \G;
*************************** 1. row ***************************
  Level: Note
   Code: 1003
Message: select `test`.`tabname`.`tid` AS `tid` from `test`.`tabname`
1 row in set (0.00 sec)

ERROR:
No query specified

show warnings 显示了优化器中是怎么规范表和字段名的,在通过重写和优化规则之后的 select 语句是什么样子。



更多参考:

EXPLAIN Output Format

EXPLAIN EXTENDED Output Format


本文地址:Hello.KK (SQL Server) http://blog.csdn.net/kk185800961/article/details/49179619

你可能感兴趣的:(MYSQL,MYSQL,调优优化)