开发者社区> xaubllxwtvaqiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素

简介: FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
+关注继续查看

导读

EXPLAIN的结果中,有哪些关键信息值得注意呢?

MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息。

总的来说,我们只需要关注结果中的几列:

列名备注
type本次查询表联接类型,从这里可以看到本次查询大概的效率
key最终选择的索引,如果没有索引的话,本次查询效率通常很差
key_len本次查询用于结果过滤的索引实际长度,参见另一篇分享(FAQ系列-解读EXPLAIN执行计划中的key_len
rows预计需要扫描的记录数,预计需要扫描的记录数越小越好
Extra额外附加信息,主要确认是否出现 Using filesort、Using temporary 这两种情况


首先看下 type 有几种结果,分别表示什么意思:

类型备注
ALL执行full table scan,这是最差的一种方式
index执行full index scan,并且可以通过索引完成结果扫描并且直接从索引中取的想要的结果数据,也就是可以避免回表,比ALL略好,因为索引文件通常比全部数据要来的小
range利用索引进行范围查询,比index略好
index_subquery子查询中可以用到索引
unique_subquery子查询中可以用到唯一索引,效率比 index_subquery 更高些
index_merge可以利用index merge特性用到多个索引,提高查询效率
ref_or_null表连接类型是ref,但进行扫描的索引列中可能包含NULL值
fulltext全文检索
ref基于索引的等值查询,或者表间等值连接
eq_ref表连接时基于主键或非NULL的唯一索引完成扫描,比ref略好
const基于主键或唯一索引唯一值查询,最多返回一条结果,比eq_ref略好
system查询对象表只有一行数据,这是最好的情况

上面几种情况,从上到下一次是最差到最好


再来看下Extra列中需要注意出现的几种情况:

关键字备注
Using filesort将用外部排序而不是按照索引顺序排列结果,数据较少时从内存排序,否则需要在磁盘完成排序,代价非常高,需要添加合适的索引
Using temporary需要创建一个临时表来存储结果,这通常发生在对没有索引的列进行GROUP BY时,或者ORDER BY里的列不都在索引里,需要添加合适的索引
Using index表示MySQL使用覆盖索引避免全表扫描,不需要再到表中进行二次查找数据,这是比较好的结果之一。注意不要和type中的index类型混淆
Using where通常是进行了全表引扫描后再用WHERE子句完成结果过滤,需要添加合适的索引
Impossible WHERE对Where子句判断的结果总是false而不能选择任何数据,例如where 1=0,无需过多关注
Select tables optimized away使用某些聚合函数来访问存在索引的某个字段时,优化器会通过索引直接一次定位到所需要的数据行完成整个查询,例如MIN()\MAX(),这种也是比较好的结果之一

再说下,5.6开始支持optimizer trace功能,看样子在执行计划方面是要逐渐和ORACLE看齐 :)

            </div>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在打包程序中自动安装SQL Server数据库 .
原文:在打包程序中自动安装SQL Server数据库 . 1、创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。
583 0
阿里云ecs上实现SLB负载均衡实践
两台ecs实现SLB负载均衡实践
0 0
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
0 0
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
0 0
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
0 0
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
0 0
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
FAQ系列 | EXPLAIN执行计划中要重点关注哪些要素
0 0
阿里云飞天计划ECS安装宝塔使用体验
我们需要远程连接我们的云服务器存在,可以直接在网页端控制台连接,也可以在自己的电脑上安装Xshell远程连接服务器。
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《开放搜索查询分析服务架构分享》
立即下载
RowKey与索引设计:技巧与案例分析
立即下载
MaxCompute SQL计算成本调优以及优化方法
立即下载