mysql 中 sql语句 explain(一)
来源:互联网 发布:asp.net 投票系统源码 编辑:程序博客网 时间:2024/06/01 09:47
参考:http://www.2cto.com/database/201307/230048.html
http://blog.csdn.net/zhuxineli/article/details/14455029
explain是用来分析mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
1. id
语句的执行顺序标识。是指select语句执行的顺序
2、select_type:
2.1、simple
简单类型,只要 语句中没有子查询或union。
EXPLAIN SELECT * FROM `fm_company`
2.2 primary
最外面的select,在有子查询的语句中,最外面的select查询就是primary。查询关键字和主键无关
EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS t2 WHERE t2.`id` = 1)
2.3 union
union语句的后面那个 select 执行执行语句。
EXPLAIN SELECT * FROM `fm_company` AS t1 UNIONSELECT * FROM `fm_company` AS t2
2.4 dependent subquery
子查询中内层中第一个select语句。
EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS sub_t1 WHERE sub_t1.`id` = 148)
2.5、devived
派生表(中间表)的查询语句
EXPLAIN SELECT * FROM (SELECT * FROM `fm_company` AS t1 UNIONSELECT * FROM `fm_company` AS t2) subQuery
2.6、dependent union
子查询中union且为union中第二个select开始的后面所有select,依赖于外部的结果集。
EXPLAIN SELECT * FROM `fm_company` as t1 WHERE orgId IN(SELECT orgId FROM fm_company as sub_t1 WHERE sub_t1.`id` = 148 union SELECT orgId FROM fm_company AS sub_t2 WHERE sub_t2.`id` = 149)
2.7 union result
顾名思义就是 union中合并的结果
3. table
显示这一步所访问的数据库中表的名称
4. type
这列很重要,显示了连接使用了哪种类别,有无使用索引。type代表查询执行计划(QEP)中指定的表使用的连接方式。从最好到最差的连接类型为
4.1.system
system为const一个特例,即表中只有一条记录。这个是及特殊的情况
4.2.const
const是在where条件以常量作为查询条件,表中最多有一条记录匹配。由于是常量,所以实际上只需要读一次。
const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快
记住一定是用到primary key 或者unique,并且只检索出两条数据的 情况下才会是const。如下面这个sql。直接用主键id 查找
EXPLAIN SELECT * FROM fm_company WHERE id=148
4.3. eq_reg
最多只会有一条匹配结果,一般是通过主键或是唯一索引来访问。一般会出现在连接查询的语句中。
mysql手册是这样说的:"对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用于使用=比较带索引的列
EXPLAIN SELECT * FROM fm_company t1 ,fm_company t2 WHERE t1.id=t2.id
后面有时间再研究吧。
4. ref、5. range、6.index、7. all
1 2
- mysql 中 sql语句 explain(一)
- mysql中explain查看sql语句执行效率
- mysql使用explain优化sql语句
- Mysql之sql语句优化:explain
- MySQL 使用explain分析sql语句的查询效率(一)
- MySQL 使用explain分析sql语句的查询效率(一)
- 【MySQL】基于MySQL的SQL优化(一)——从用explain关键字分析SQL语句开始
- sql语句加explain
- explain 分析sql 语句
- .mysql的SQL语句执行计划分析:EXPLAIN
- MySQL优化 之 用explain分析低效率的sql语句
- mySQL数据库Sql语句执行效率检查--Explain命令
- mySQL数据库Sql语句执行效率检查--Explain命令
- mysql 慢日志开启 及explain 分析sql语句
- mysql执行sql语句优化分析命令explain命令小记
- mySQL数据库Sql语句执行效率检查--Explain命令
- mySQL数据库Sql语句执行效率检查--Explain命令
- mysql explain分析sql语句的执行计划
- WebView加载本地Html文件
- 又是第一次android
- libzmq的安装
- Oracle表明明存在SQL查询数据提示表不存在异常
- 线程的生命周期与优先级
- mysql 中 sql语句 explain(一)
- 国外最新云技术即将开测 将实现平板玩魔兽
- Python 基础教程(二)
- 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载21:Spartan-6的时钟资源
- curl Expect:100-continue
- Android表单开发及事件侦听
- Android内存优化总结【整理】
- POJ2236 Wireless Network 并查集
- java直接读压缩包