mysql,如何看执行计划(共5篇).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mysql,如何看执行计划(共5篇)   MySQL执行计划解读   1、id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行   Explain语法   EXPLAINSELECT??   变体:   1.EXPLAINEXTENDEDSELECT??   将执行计划“反编译”成SELECT语句,运行SHOWWARNINGS可得到被MySQL优化器优化后的查询语句   2.EXPLAINPARTITIONSSELECT??   用于分区表的EXPLAIN   执行计划包含的信息   id   包含一组数字,表示查询中执行select子句或操作表的顺序   id相同,执行顺序由上至下   如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行   id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行   select_type   表示查询中每个select子句的类型   :查询中不包含子查询或者UNION   b.查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY   c.在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY   d.在FROM列表中包含的子查询被标记为:DERIVED   e.若第二个SELECT出现在   UNION之后,则被标记为   UNION;若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED   f.从UNION表获取结果的SELECT被标记为:UNIONRESULT   type   表示MySQL在表中找到所需行的方式,又称“访问类型”,常见类型如下:   由左至右,由最差到最好   :FullTableScan,MySQL将遍历全表以找到匹配的行   :FullIndexScan,index与ALL区别为index类型只遍历索引树   :索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于   between、   等的查询   range访问类型的不同形式的索引访问性能差异   MySQL执行计划   mysql的执行计划:   explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。   使用方法,在select语句前加上explain就可以了:   如:explainselect*fromtest1   EXPLAIN列的解释:   table:显示这一行的数据是关于哪张表的   type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL   possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句   key:实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USEINDEX来强制使用一个索引或者用IGNOREINDEX来强制MYSQL忽略索引   key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好   ref:显示索引的哪一列被使用了,如果可能的话,是一个常数   rows:MYSQL认为必须检查的用来返回请求数据的行数   Extra:关于MYSQL如何解析查询的额外信息。将在表中讨论,但这里可以看到的坏的例子是Usingtemporary和Usingfilesort,意思MYSQL根本不能使用索引,结果是检索会很慢   extra列返回的描述的意义   Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了   Notexists:MYSQL优化了LEFTJOIN,一旦它找到了匹配LEFTJOIN标准的行,就不再搜索了   RangecheckedforeachRecord:没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一Usingfilesort:看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行   Usingindex:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候   Usingtemporary看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的

文档评论(0)

sanshengyuan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档