MySQL 使用explain分析sql语句的查询效率(一)
来源:互联网 发布:淘宝模板是什么格式的 编辑:程序博客网 时间:2024/06/05 21:04
MySQL explain用于分析sql 语句的执行及数据库索引的使用。本文将致力于帮助大家充分理解explain所返回的各项参数,从而使大家快速掌握explain用法技巧。如果你在看其他教程或视频后仍觉得云里雾里。那么请通读本文。
用法
explain的用法相当简洁,直接在sql语句前加上EXPLAIN 即可,例如:
- 1
- 2
- 1
- 2
本语句将返回:
每行将得到id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra几个参数。
其中与效率息息相关的则是type,key,ref,rows。
下面依次解析以上所有参数:
参数解析
id,select_type,table 用于定位查询,表示本行参数所对应的sql查询部分:
(1)id
SELECT识别符。这是SELECT的查询序列号。不重要,需要注意的是,不要把id当成执行顺序,这并不准确。
(2)select_type
SELECT类型,可以为以下几种:
- SIMPLE: 指示非子查询和union的简单查询。
- 1
- 1
- PRIMARY: 指示在有子查询的语句中最外面的select,主查询。
- UNION: 指示在使用union语句的第二个或后面的select。
- DEPENDENT UNION: 子查询union语句的第二个或后面的select。
- UNION RESULT : union语句的结果集。
- SUBQUERY:子查询中的语句。与union相反理解就行了。
- DEPENDENT SUBQUERY:子查询中第一个语句。
- DERIVED:派生表的SELECT(FROM子句的子查询)。
(3)table
就是表名,本行记录对应查询所应用的表。可以通过table表名帮助定位查询。
使用explain时,有时table字段显示的并不是表名,而是 derived2 或 derived3 等等。。。
即 derived x 代表的是id为x的查询所得的结果集。例如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
explain后所得:
由以上内容可知,id为2的记录对应inner join后的子查询1,第一条记录所对应的table参数值derived2即为子查询1的结果集。
案例
为帮助大家理解,请看2个案例:
(1)
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
本例中没有子查询,所以explain后将返回两条简单查询记录
两条select_type均为SIMPLE,第一条table 为o 即 stores_order表的代号,所以判定第一条的参数为join前半段在stores_order表中检索数据的过程,第二条则是通过store_id在stores_info表中获取stores_name的过程。
(2)
将上例中sql语句改写成如下等效sql:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
本条sql与上条sql效果相同,但是加入了子查询,故而返回参数与上个案例完全不同:
select_type为DEPENDENT SUBQUERY的记录毫无疑问就是括号内的子查询部分喽,另一条PRIMARY的记录对应的当然就是主查询 select … from ec_stores_order o啦~
未完待续~
下一篇将继续讲解其他与效率相关的参数,敬请期待~
- MySQL 使用explain分析sql语句的查询效率(一)
- MySQL 使用explain分析sql语句的查询效率(一)
- MySQL 使用explain分析sql语句的查询效率(二)
- MySQL使用explain分析sql效率
- mysql优化–explain分析sql语句执行效率
- mysql优化–explain分析sql语句执行效率
- MySQL的查询语句EXPLAIN分析
- MySQL 使用 explain 查看SQL语句执行效率
- mysql 查询语句分析explain
- mysql explain的用法(使用explain优化查询语句)
- Explain命令查看MySQL的SQL语句执行效率
- explain分析sql语句执行效率
- 【MySQL】基于MySQL的SQL优化(一)——从用explain关键字分析SQL语句开始
- 使用 EXPLAIN 关键字 检查SQL语句效率
- 使用 EXPLAIN 关键字 检查SQL语句效率
- 使用 EXPLAIN 关键字 检查SQL语句效率
- 使用 EXPLAIN 关键字 检查SQL语句效率
- MySql 使用explain分析查询
- Java Semopher原理和应用
- Hdu 6155 线段树维护转移矩阵
- Java 集合(三)
- 配置ssh免密码登录
- miniUI控件checkbox
- MySQL 使用explain分析sql语句的查询效率(一)
- 初识Redis
- app接口java签名验证工具类
- AFNetWorking 获取statusCode
- python 集合类型
- 产生ANR的原因及如何避免
- IDAPython手册
- 传球接力
- JavaScript 面向对象基础总结