mysql explain使用方法
explain就是SQL的执行计划,通过执行计划,我们可以了解sql的执行当中的一些细节。
使用方法为在SQL语句前加explain
得到结果如下:
mysql> explain select id,c1 from t1 where c1=4398825;
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| 1 | SIMPLE | t1 | ALL | NULL | NULL | NULL | NULL | 4992210 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
1 row in set (0.00 sec)
各列功能如下:
- id: 按照sql语法解析后分层后的编号,可能重复
- select_type:
- SIMPLE,简单的select查询,不使用union及子查询
- PRIMARY,最外层的select查询
- UNION,UNION 中的第二个或随后的 select 查询,不依赖于外部查询的结果集
- DEPENDENT UNION,UNION 中的第二个或随后的 select 查询,依赖于外部查询的结果集
- SUBQUERY,子查询中的第一个 select 查询,不依赖于外部查询的结果集
- DEPENDENT SUBQUERY,子查询中的第一个 select 查询,依赖于外部查询的结果集
- DERIVED,用于 from子句里有子查询的情况。 MySQL会递归执行这些子查询, 把结果放在临时表里。
- UNCACHEABLE SUBQUERY,结果集不能被缓存的子查询,必须重新为外层查询的每一行进行评估。
- UNCACHEABLE UNION,UNION 中的第二个或随后的 select 查询,属于不可缓存的子查询
- table:涉及的表,如果SQL中表有赋别名,这里出现的是别名
- type:
- system,从系统表读一行。这是const联接类型的一个特例。
- const,表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次!
- eq_ref,查询条件为等于
- ref,条件查询不等于
- ref_or_null,同ref(条件查询),包含NULL值的行。
- index_merge,索引联合查询
- unique_subquery,利用唯一索引进行子查询
- index_subquery,用非唯一索引进行子查询
- range,索引范围扫描
- index,索引全扫描
- ALL,全表扫描。
- possible_keys:可能使用的索引
- key:sql中使用的索引
- key_len:索引长度
- ref:使用哪个列或常数与key一起从表中选择行。
- rows:显示MYSQL执行查询的行数,简单且重要,数值越大越不好,说明没有用好索引
- Extra:该列包含MySQL解决查询的详细信息。
- Distinct,去重,返回第一个满足条件的值
- Not exists 使用not exists查询
- Range checked for each record,有索引,但索引选择率很低
- Using filesort,有序查询
- Using index,索引全扫描
- Using index condition,索引查询
- Using temporary,临表表检索
- Using where,where条件查询
- Using sort_union,有序合并查询
- Using union,合并查询
- Using intersect,索引交叉合并
- Impossible WHERE noticed after reading const tables,读取const tables,查询结果为空
- No tables used,没有使用表
- Using join buffer (Block Nested Loop),使用join buffer(BNL算法)
- Using MRR(Multi-Range Read ) 使用辅助索引进行多范围读
转载自:https://segmentfault.com/a/1190000006726948#articleHeader14
mysql explain使用方法相关推荐
- mysql index 使用方法_mysql index索引使用方法
索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行.表越大,花费的时间越多.如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜 ...
- Mysql Explain 详解
Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...
- MYSQL:explain分析
mysql explain分析 通过explain可以知道mysql是如何处理语句,分析出查询或是表结构的性能瓶颈.通过expalin可以得到: 1. 表的读取顺序 2.表的读取操作的操作类型 3.哪 ...
- (mysql) EXPLAIN语法
MySQL Explain功能中展示各种信息的解释. 1.ID:MySQL Query Optimizer选定的执行计划中查询的序列号. 2.Select_type:所使用的查询类型,主要有以下这几种 ...
- mysql explain用法和结果的含义
转载自https://www.cnblogs.com/yycc/p/7338894.html 转自:http://blog.chinaunix.net/uid-540802-id-3419311.ht ...
- mysql explain的使用(优化查询)
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 1.创建数据库 创建的sql语句如下: /*Navicat MySQL Da ...
- mysql explain 索引_MySql中Explain详解与索引最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子: 在 select 语句之 ...
- MySQL explain结果详解
Mysql Explain 结果详解 语法 explain < SQL statement> 例如: explain select * from t3 where id=3952602; ...
- [转]Mysql explain用法和性能分析
本文转自:http://blog.csdn.net/haifu_xu/article/details/16864933 from @幸福男孩 MySQL中EXPLAIN解释命令是显示mysql如何 ...
最新文章
- PHP、Python 竟上榜最慢的现代编程语言
- Python startswith() 方法
- C++读取文件夹中所有文件的路径,包含子文件夹
- 2016年4月11日作业(法律法规、标准规范、职业道德)
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
- 开源的关系型数据持久化组件
- Docker Compose学习之docker-compose.yml编写规则 及 实战案例
- 刚刚,爱奇艺发布重磅开源项目!
- Photoshop钢笔工具使用方法
- axis1 c# 接口 调用_C#图形编程GDI+基础
- GDI GDI+ 的区别
- 一文看懂:销售数据分析怎么做?
- 计算机 360云盘删除,删除360云盘图标,教你win7系统删除360云盘图标教程
- 小球碰撞python代码_Java 实现小球碰撞GUI
- codebook 背景减除
- AI根据代码内容自动起函数名,再也不怕命名不规范的同事了|开源
- 2020淘宝双十一快速刷金币工具
- Linux C编程(五) 之 gdb详解
- 京东区块链开源底层JD Chain版本升级,获工信部功能测试证书
- 一个好的科技公司logo长这样