GE·優個人博客 提醒:提倡文明上网,请务必对自己的言语负责!如发现在本站有违法和不良信息博主将其追究责任!

技术支持

您现在的位置是:首页 > 技术支持 > 正文

在MySQL中使用explain查询SQL的执行计划

发布时间:2018-05-07 13:54:14作者:博主评论:0点击:

1、什么是MySQL执行计划
 
要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。
 
MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。
 
应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。
逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。        
首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。
 
计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。
 
物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。   
通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为作为性能分析的依据。
 
2、如何分析执行计划
 
MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。
 
explain显示了MySQL如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。
 
下面我们使用 explain 做一个查询,如下:
 
mysql> explain select * from payment;  
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  
| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra |  
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  
|  1 | SIMPLE      | payment | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 16086 |   100.00 | NULL  |  
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+  
1 row in set, 1 warning (0.01 sec) 
查询结构中有12列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。
在MySQL中使用explain查询SQL的执行计划

[注]原文有更改, 来源于:http://database.51cto.com/art/201805/572680.htm

#MySQL #explain

上一篇:微分隔:越细致越安全
下一篇:2018年的5个区块链趋势