MySql中如何使用explain查询SQL的执行计划
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql中如何使用explain查询SQL的执行计划,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5772字,纯文字阅读大概需要9分钟。
内容图文
![MySql中如何使用explain查询SQL的执行计划](/upload/InfoBanner/zyjiaocheng/583/cbc4922dc9944c1980850c8918998e84.jpg)
explain命令是查看查询优化器如何决定执行查询的主要方法。
这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。
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列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。
列名 | 说明 |
---|---|
id | SELECT识别符,这是SELECT的查询序列号。 |
select_type |
SELECT类型,可以为以下任何一种:
|
table | 输出的行所引用的表 |
partitions | 如果查询是基于分区表的话,显示查询将访问的分区。 |
type |
联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:
一般来说,得保证查询至少达到range级别,最好能达到ref。 |
possible_keys | 指出MySQL能使用哪个索引在该表中找到行 |
key | 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。 |
key_len | 显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。在不损失精确性的情况下,长度越短越好 |
ref | 显示使用哪个列或常数与key一起从表中选择行。 |
rows | 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。 |
filtered | 显示了通过条件过滤出的行数的百分比估计值。 |
Extra |
该列包含MySQL解决查询的详细信息
|
总结
以上所述是小编给大家介绍的MySql中如何使用 explain 查询 SQL 的执行计划,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
- MySQL查询优化之explain的深入解析
- mysql中explain用法详解
- mysql总结之explain
- MySQL性能分析及explain的使用说明
- Mysql中explain作用详解
- Mysql之EXPLAIN显示using filesort介绍
- MySQL中通过EXPLAIN如何分析SQL的执行计划详解
- MYSQL explain 执行计划
- 详解MySQL中EXPLAIN解释命令及用法讲解
- MySQL性能优化神器Explain的基本使用分析
内容总结
以上是互联网集市为您收集整理的MySql中如何使用explain查询SQL的执行计划全部内容,希望文章能够帮你解决MySql中如何使用explain查询SQL的执行计划所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。