注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

Mysql性能分析命令explain的简单用法  

2016-07-16 19:36:51|  分类: Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助我们选择更好的索引以及写出更优化的查询语句。而使用方法也是非常简单,只要在您觉得有需要,在select语句前加上explain就可以了。然后分析结果会形如下面所示:
Mysql性能分析命令explain的简单用法 - sinsunson - 天朝布衣田中码农参上
以下是相关解说:
table 显示这一行的数据是关于哪张表的
type  这是重要的列【需要关注】,显示连接使用了何种类型。从最好到最差的连接类型为system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
下面是它的类型解释:
System(表中仅有一行,即常量表)
const(单表中最多有一个匹配行)
eq_ref(对于前面的每一行,在此表中只查询一条记录)
ref(使用普通的索引)
ref_or_null(和ref类似,但是条件中包含对于NULL查询)
index_merge(索引合并优化)
unique_subquery(in的后面是一个查询主键字段的子查询)
index_subquery(类似unique_subquery,主要是in的后面是查询非唯一索引字段的子查询)
range(单表中的范围查询)
index(对于当前的每一行,都通过查询索引来得到数据)
all(对于当前的每一行,都通过全表扫描来得到数据)
possible_keys 显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句。
key 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引。
key_len 使用的索引的长度。在不损失精确性的情况下,长度越短越好。
ref 显示索引的哪一列被使用了,如果可能的话,是一个常数。
rows MYSQL认为必须检查的用来返回请求数据的行数。
Extra 关于MYSQL如何解析查询的额外信息。最坏的结果就是sing temporary和Using filesort,意思MYSQL根本不能使用索引,结果自然是检索会很慢很慢。这个字段也有非常多的具体项,解释如下:

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,这就会发生,或者是查询有问题。

好了,有了这个工具,相信大家对自己写的SQL语句就可以做到更优化了,让网站的性能飞起来再不是一个触不可及的梦想。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018