mysqlexplain中的type列含义和extra列的含义 explain type

mysqlexplain中的type列含义和extra列的含义 explain type
很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义。1 type列官方的说法,说这列表示的是“访问类型”,更通俗一点就是:mysql找到需要的数据行的方式。一下就是从效率最差到最好顺序分别介绍下:All这个就是所谓的全表扫描,没有用到任何的index,mysql就是从头到尾把整个表遍历一边,找到所需要的数据行。效率是最差的。如下图,这个表中的usertype不是索引,这个查询中没有用到任何索引,所以就出现了全表扫描的结果。

indextype列中出现了index,含义仅仅是局限在扫描全表的顺序是按照索引顺序扫描的,仅仅是按索引顺序去扫描的。它的有点是避免了排序,因为索引就是已经排序好的,缺点就是要承担按照索引次序读取整张表的开销。如下,这个————查询中orderbyid,id是这个表的索引,但是因为没有在where中出现任何的索引列,所以它也只是索引顺去扫描了全表。(这里强调一下,你的查询语句中where条件中没有索引,只是orderby的时候用了index,而且没有用limit限制,type这里显示的是all,也就是这种情况下没有limit,还是扫面全表的)

range这个一般就是在你的where语句中出现了between或者“>”这种符号的时候会出现这个。这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束语另一点,不用扫描全部索引。ref这也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。const,system当mysql能对查询的部分就行优化,并且转换成一个常量的时候,它就会使用这种访问类型了。比如你把一行的主键当做where条件放进去,那mysql就可以把它转换成一个常量,然后查询。如下图:uid是主键,作为where条件就能出现这个效率最高的查询结果。

2 extra列extra列中出现的信息一般不是太重要,但是还是有很多信息我们可以从这里面获取到:using index:出现这个说明mysql使用了覆盖索引,避免访问了表的数据行,效率不错!usingwhere:这说明服务器在存储引擎收到行后将进行过滤。有些where中的条件会有属于索引的列,当它读取使用索引的时候,就会被过滤,所以会出现有些where语句并没有在extra列中出现usingwhere这么一个说明。using temporary:这意味着mysql对查询结果进行排序的时候使用了一张临时表。usingfilesort:这个说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/246316.html

更多阅读

如何删除或者隐藏ps中的参考线和标尺? ps隐藏参考线

   有时候从网上下载psd文件打开时,用photoshop打开后,会看到横横竖竖的各色各样的长线,这其实就是photoshop中的“参考线和标尺”,那么如果我们不需要这些 辅助的功能呢?想删除或者 隐藏这些线,那该如何做呢?下面就是自己总结的几条经验,跟大家分享下。  

宫颈锥切术在CIN中的诊断和治疗价值 cin3锥切干净就好了吗

摘 要 目的 评价宫颈锥切术在CIN中的诊断和治疗价值。方法 回顾分析22例宫颈锥切术患者的细胞学、阴道镜检查及活检结果、颈管诊刮、宫颈锥切病理及子宫切除术的病理结果,同时分析了并发症的防治及随诊TCT的结果。结果 宫颈锥

Linux和windows中的换行符差异问题 windows 换行符

LINUX的换行符在Windows记事本打开不换行或出现黑点是由于Linux和windows中的换行符差异问题造成的。首先来看回车符号和换行符号产生背景关于“回车”(carriage return)和“换行”(linefeed)这两个概念的来历和区别。在计算机还没有出

线程中的悲观锁和乐观锁 java中乐观锁和悲观锁

线程中的锁可以分为乐观锁和悲观锁,这两个都是实现锁机制的两种办法。悲观锁:根据字面意思,悲观,就是不是太好的。当一个线程访问这个数据的时候,悲观锁会把这个数据给锁住,不被其他线程所访问,直到这个线程完成了对数据的提交后,其他线程

声明:《mysqlexplain中的type列含义和extra列的含义 explain type》为网友熬夜成瘾分享!如侵犯到您的合法权益请联系我们删除