首页 > 数据库技术 > 详细

MySQL Execution Plan--EXPLAIN用法

时间:2019-04-17 22:48:53      阅读:275      评论:0      收藏:0      [点我收藏+]

MySQL Explain新用法:

--使用EXPLAIN来查看语句的最终执行计划
语法:EXPLAIN [EXTENDED] SELECT select_options


--在MYSQL 5.7版本后,可以查看正在执行的语句的执行计划
EXPLAIN FOR CONNECTION connection_id;


--在MYSQL 5.7版本后,可以指定生成执行计划的格式为JSON
EXPLAIN FORMAT=JSON SELECT ...

 

在EXPLAIN的输出结果中,有一行Type用来表示MYSQL使用哪种访问类型来从MYSQL表中找到需要的行。

type=ALL: 表示全表扫描,需要遍历全表的所有行。
缺少索引或缺少合适的过滤条件,或执行计划有问题

type=INDEX: 表示所有扫描,需要遍历索引上所有行。
查询缺少过滤条件或存在类型转换问题。

type=range: 表示范围扫描。

type=ref: 使用非唯一索引或唯一索引的前缀扫描,返回匹配某个单独值得记录行。

type=eq_ref:使用唯一索引来匹配。

type=const/system:单表总最多有一个匹配行,查询效率高。

type=null,MYSQL不用访问表或索引即可获得结果。

 


使用EXPLAIN EXTENDED 命令+SHOW WARNINGS命令来看在SQL语句被执行前被执行优化器改写成的新SQL:

EXPLAIN EXTENDED SELECT * FROM TB001 WHERE ID=200;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+
| 1 | SIMPLE | TB001 | const | PRIMARY | PRIMARY | 8 | const | 1 | 100.00 | NULL |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+

SHOW WARNINGS \G
*************************** 1. row ***************************
Level: Note
Code: 1003
Message: /* select#1 */ select 200 AS `id`,INNODB_READ_AHEAD_TH AS `c1` from `test1`.`tb001` where 1
1 row in set (0.00 sec)

 



 

MySQL Execution Plan--EXPLAIN用法

原文:https://www.cnblogs.com/gaogao67/p/10726708.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!