加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL中执行计划explain命令示例细说

发布时间:2022-03-03 23:03:56 所属栏目:MySql教程 来源:互联网
导读:explain命令是查看查询优化器如何决定执行查询的主要方法。 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。 在select之前添加explain,mysql会在查询上设置一个标记,当执行查
      explain命令是查看查询优化器如何决定执行查询的主要方法。
这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。
  
       在select之前添加explain,mysql会在查询上设置一个标记,当执行查询计划时,这个标记会使其返回关于执行计划中每一步的信息,而不是执行它。
它会返回一行或多行信息,显示出执行计划中的每一部分和执行次序。
 
这是一个简单的explain效果:
 
MySQL中执行计划explain命令示例详解
在查询中每个表在输出只有一行,如果查询是两个表的联接,那么输出中将有两行。
别名表单算为一个表,因此,如果把一个表与自己联接,输出中也会有两行。
“表”的意义在这里相当广,可以是一个子查询,一个union结果等。
  
      EXPLAIN PARTITIONS会显示查询将访问的分区,如果查询是基于分区表的话。
      在mysql 5.1以上的版本中会存在。
 
EXPLAIN限制:
· explain根本不会告诉你触发器、存储过程或UDF会如何影响查询
· 不支持存储过程,尽管可以手动抽取查询并单独地对其进行explain操作
· 它并不会告诉你mysql在执行计划中所做的特定优化
· 它并不会显示关于查询的执行计划的所有信息
· 它并不区分具有相同名字的事物,例如,它对内存排列和临时文件都使用“filesort”,并且对于磁盘上和内存中的临时表都显示“Using temporary”
· 可能会产生误导,比如,它会对一个有着很小limit的查询显示全索引扫描(mysql 5.1的explain关于检查的行数会显示更精准的信息,但早期版本并不考虑limit)。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读