详解MySQL中EXPLAIN解释命令

转载链接:http://database.51cto.com/art/200912/168453.htm


explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

使用方法,在select语句前加上explain就可以了:

如:

  1. explain select surname,first_name form a,b where a.id=b.id 

EXPLAIN列的解释:

table:显示这一行的数据是关于哪张表的

type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL

possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

rows:MYSQL认为必须检查的用来返回请求数据的行数

Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

extra列返回的描述的意义

Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了

Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)

system 表只有一行:system表。这是const连接类型的特殊情况

const:表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待

eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用

ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好

range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况

index: 这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)

ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免


【责任编辑:彭凡 TEL:(010)68476606】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell编程基础

我们可以使用任意一种文字编辑器&#xff0c;比如gedit、kedit、emacs、vi等来编写shell脚本&#xff0c;它必须以如下行开始&#xff08;必须放在文件的第一行&#xff09;&#xff1a; # !/bin/sh ...注意&#xff1a;最好使用“!/bin/bash”而不是“!/bin/sh”&#xff0c;…

总结:自学前端的高效学习路线

提到前端&#xff0c;大多数人都会想到薪资高。也正因为如此&#xff0c;很多人想要从事前端开发这个岗位&#xff0c;也由此衍生出来一个问题&#xff1a;为什么前端工程师供不应求&#xff0c;但还是有很多学前端的人找不到工作&#xff1f;其实行业不是缺前端工程师&#xf…

机器人出魔切还是三相_英雄联盟:辅助也要去上单,机器人布里茨玩法介绍

英雄联盟&#xff1a;辅助也要去上单&#xff0c;机器人布里茨玩法介绍出装方面我们都知道他的被动是可以将法力值化为机的护盾的&#xff0c;而这样的话装备就可以选择魔切&#xff0c;然后再出一个鞋子&#xff0c;为什么不先出三项呢&#xff1f;三项的性价比是比较高的&…

vmware创建虚拟机不识别网卡

今天在给虚拟机添加网卡的时候&#xff0c;出现了虚拟机不识别新加的网卡&#xff0c;很纳闷&#xff0c;连的一样的端口组&#xff0c;为什么新加的网卡识别不了呢 然后查看pci设备&#xff0c;发现网卡的驱动为 AMD 79C970 PCnet32- LANCE 然后都vc上查看&#xff0c;果真驱动…

转:26个Jquery使用小技巧(jQuery tips, tricks solutions)

26个Jquery使用小技巧(jQuery tips, tricks & solutions) 前段时间发布了Jquery类库1.4版本&#xff0c;使用者也越来越多&#xff0c;为了方便大家对Jquery的使用&#xff0c;下面列出了一些Jquery使用技巧。比如有禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接…

周末包邮送书和小红包中奖名单公布

大家好&#xff0c;我是若川。周末送福利&#xff0c;给大家送红包、包邮送新书&#xff01;这篇文章中&#xff0c;准备了3本自选前端新书&#xff0c;10个2元小红包&#xff0c;在看抽10人每人5元红包&#xff0c;2月28日晚8点开奖。现将名单公布如下&#xff1a;在看抽奖&am…

Ubuntu 命令行修改网络配置方法

转载链接&#xff1a;http://www.jb51.net/article/15807.htm Ubuntu 命令行修改网络配置方法 /etc/network/interfaces 打开后里面可设置DHCP或手动设置静态ip。前面auto eth0&#xff0c;让网卡开机自动挂载. 1. 以DHCP方式配置网卡 编辑文件/etc/network/interfaces: sudo v…

python treeview底部加个按钮_Python爬取京东商品信息(GUI版本)

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者&#xff1a;DYblog转载&#xff1a;https://www.cnblogs.com/dy8888/p/13257918.htmlPS&#xff1a;如有需要Python学习资料的小伙伴可以加点击…

Linux下编译安装Mysql简单步骤

常规方式编译安装MySQL时&#xff0c;适合用第一条最正宗的MySQL产品线5.2及以前版本&#xff1a;所谓常规方式编译安装MySQL就是延续早期MySQL的3部曲安装方式&#xff0c;即./configure;make;make install&#xff0c;下面是老男孩在早期的企业生产场景下操作过的具体命令及参…

Vue.js 3.0 响应式 API 比 2.x 好在哪儿?

Hello&#xff0c;各位小伙伴&#xff0c;接下来的一段时间里&#xff0c;我会把我的课程《Vue.js 3.0 核心源码解析》中问题的答案陆续在我的公众号发布&#xff0c;由于课程的问题大多数都是开放性的问题&#xff0c;所以我的答案也不一定是标准的&#xff0c;仅供你参考喔。…

招聘.NET程序员

人才难找啊&#xff0c;顺便发个招聘启事。 西安瀚博科技有限公司招聘.NET程序员&#xff0c;有工作经验者优先 如有意向&#xff0c;请发邮件到 slzhanghiweb.cn 转载于:https://www.cnblogs.com/shengli/archive/2010/03/08/1680861.html

xml解析类

转载链接&#xff1a;http://zyan.cc/post/253 今天在PHP4环境下重新写一个接口程序&#xff0c;需要大量分析解析XML&#xff0c;PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组&#xff0c;而SimpleXML扩展在PHP5中才支持&#xff0c;于是逛逛搜索引擎&#x…

jmeter学习指南之聚合报告

jmeter视频地址&#xff1a;https://edu.51cto.com/course/14305.html 上一篇文章中我们讲了Jmeter结果分析最常用的一个Listener查看结果树&#xff0c;今天接着讲另一个最常用的listener--聚合报告Aggregate Report。我们先来看看聚合报告中的主要名称的含意&#xff1a;Labe…

敏捷开发概述

敏捷方法强调适应性而非预见性。 目前列入敏捷方法的有&#xff1a; 軟件開發節奏&#xff0c;Software Development Rhythms 敏捷數據庫技術&#xff0c;AD/Agile Database Techniques 敏捷建模&#xff0c;AM/Agile Modeling 自適應軟件開發&#xff0c;ASD/Adaptive Softwar…

2021 整理的最全学习资源,送给每一个努力着的人

时间来到了 2021 年&#xff0c;新的一年有新的期待&#xff0c;而我亦有新的祝福如果说在过去的一年&#xff0c;经历太多&#xff0c;心酸、迷茫、焦虑、幸福、喜悦那么在 2021 年&#xff0c;希望你可以去过一种遇见自己的生活&#xff0c;恬淡、热情&#xff0c;喜欢自己而…

ubuntu+php环境下的Memcached 安装方法

转载链接&#xff1a;http://www.jb51.net/article/28887.htm Memcached是一套分散式的高速缓存系统&#xff0c;当初是Danga Interactive为了LiveJournal所发展。 目前被很多系统所使用&#xff0c;例如Flick、Twitter等。这是一套开放源代码软件&#xff0c;以BSD license授…

php移动签批源码_PHP让网站移动访问更加友好方法

PHP都是在服务器上处理的&#xff0c;所以当代码到达用户时&#xff0c;它只是HTML。基本上&#xff0c;用户从你的服务器请求你网站的一个页面&#xff0c;然后你的服务器运行所有的PHP并向用户发送PHP的结果。设备实际上从未看到或必须使用实际的PHP代码。这使得使用PHP完成的…

Chrome OS 设备或将允许用户自行选择 Linux 发行版

百度智能云 云生态狂欢季 热门云产品1折起>>> 谷歌去年宣布在 Chrome OS 上支持运行 Linux 应用&#xff0c;前不久又有消息称其将为运行这些 Linux 应用提供 GPU 加速支持&#xff0c;而现在&#xff0c;Chrome OS 似乎将在 Linux 的方向上更进一步&#xff0c;让 …

博文视点 OpenParty第11期:世界黑客大会那些事

博文视点 OpenParty第11期&#xff1a;世界黑客大会那些事 亲爱的读者朋友&#xff1a; 您好&#xff01; 2009年&#xff0c;博文视点Open Party共举办8场&#xff0c;累计到场2000人次&#xff0c;影响力辐射近5000人次&#xff0c;真正实现了博文视点Open Party的初…

我从 Vuejs 中学到了什么——框架设计学问

框架设计远没有大家想的那么简单&#xff0c;并不是说只把功能开发完成&#xff0c;能用就算完事儿了&#xff0c;这里面还是有很多学问的。比如说&#xff0c;我们的框架应该给用户提供哪些构建产物&#xff1f;产物的模块格式如何&#xff1f;当用户没有以预期的方式使用框架…