博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二
阅读量:7095 次
发布时间:2019-06-28

本文共 968 字,大约阅读时间需要 3 分钟。

  MySQL 的explain命令有一个extended选项,我想可以很多人都没有注意,因为它对命令的输出结果没有任何改变,只是增加了一个warning。这个 warning中显示了MySQL对SQL的解释,从这个解释中我们可以看到SQL的执行方式,对于分析SQL还是很有用的。也即explain 的extended 扩展能够在原本explain的基础上额外的提供一些查询优化的信息,这些信息可以通过mysql的show warnings命令得到。下面是一个最简单的例子。

首先执行对想要分析的语句进行explain,并带上extended选项

mysql> explain extended select count(*) from test1,test2 where test1.id=test2.id and test2.email='duan@qq.com';

接下来再执行Show Warnings

mysql> show warnings\G;

    explain extended 除了能够告诉我们mysql的查询优化能做什么,同时也能告诉我们mysql的查询优化做不了什么。的这篇文中中作者就利用explain extended +show warnings 找到了mysql查询优化器中不能查询优化的地方。

   从 EXPLAIN extended SELECT * FROM sbtest WHERE id>5 AND id>6 AND c="a" AND pad=c语句的输出我们得知mysql的查询优化器不能将id>5 和 id>6 这两个查询条件优化合并成一个 id>6。
例如:

mysql> explain extended select * from test1 where id in (select id from test2);

上面是一个子查询看起来和外部的查询没有任何关系,从explain extended的结果我们就可以看看mysql如何优化的:

   不过需要注意的一点是从EXPLAIN extended +show warnings得到“优化以后”的查询语句可能还不是最终优化执行的sql,或者说explain extended看到的信息还不足以说明mysql最终对查询语句优化的结果。

相关资源
 

转载地址:http://uyaql.baihongyu.com/

你可能感兴趣的文章
3、输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
查看>>
MyISAM InnoDB 区别
查看>>
时钟巡回
查看>>
看博客学学Android(六)
查看>>
Transformation functionality for the String class
查看>>
The String class's judging function
查看>>
网页制作-表单元素
查看>>
淡入淡出js
查看>>
初识Android
查看>>
一道算法题
查看>>
安装kibana
查看>>
深度搜索--poj3984 迷宫问题
查看>>
仿微信表情输入
查看>>
作业二 网调问卷制作
查看>>
求二叉树中结点的最大距离 【微软面试100题 第十一题】
查看>>
手动安装ssh
查看>>
83. Remove Duplicates from Sorted List(从有序链表中删除重复节点)
查看>>
原型设计工具
查看>>
Python之进程
查看>>
linux下按键驱动程序
查看>>