用mysql Workbench查看执行计划

Posted ShenLiang2025

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用mysql Workbench查看执行计划相关的知识,希望对你有一定的参考价值。

mysql Workbench查看图形化执行计划

数据示例

假定有部门表(dept)、员工表(emp),它们的表结构和数据见如下脚本:

-- Mysql 版本
DROP TABLE IF EXISTS emp;  
DROP TABLE IF EXISTS dept;  
create table dept(
    deptno int unsigned auto_increment COMMENT '部门编号',
    dname varchar(15) COMMENT '部门名称',
    loc varchar(50)  COMMENT '部门所在位置',
primary key(deptno)	
) COMMENT='部门表';
 
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
 
create table emp(
    empno int unsigned auto_increment COMMENT '雇员编号',
    ename varchar(15) COMMENT '雇员姓名',
    job varchar(10) COMMENT '雇员职位',
    mgr int unsigned COMMENT '雇员对应的领导的编号',
    hiredate date COMMENT '雇员的雇佣日期',
    sal decimal(7,2) COMMENT '雇员的基本工资',
    comm decimal(7,2) COMMENT '奖金',
    deptno int unsigned COMMENT '所在部门',
	primary key(empno),
    foreign key(deptno) references dept(deptno)
) COMMENT='雇员表';
 
INSERT INTO emp VALUES    (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES    (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);
INSERT INTO emp VALUES    (7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);
INSERT INTO emp VALUES    (7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);
INSERT INTO emp VALUES    (7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);
INSERT INTO emp VALUES    (7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);
INSERT INTO emp VALUES    (7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);
INSERT INTO emp VALUES    (7788,'SCOTT','ANALYST',7566,'87-7-13',3000,NULL,20);
INSERT INTO emp VALUES    (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES    (7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);
INSERT INTO emp VALUES    (7876,'ADAMS','CLERK',7788,'87-7-13',1100,NULL,20);
INSERT INTO emp VALUES    (7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);
INSERT INTO emp VALUES    (7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);
INSERT INTO emp VALUES    (7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);

需求描述

查看部门编号是20的前4个的员工里排在前3位的部门名称、雇佣时间信息。

SQL语句

SELECT e.hiredate, d.dname AS Deptname, e.empno
FROM dept d
INNER JOIN
	(SELECT deptno,empno,hiredate FROM emp
	WHERE deptno = 20
	ORDER BY hiredate DESC
	LIMIT 4
	) e 
ON e.deptno = d.deptno
ORDER BY d.dname DESC
LIMIT 3

执行计划

1 mysql Workbench里执行SQL查看结果

2 mysql Workbench里查看执行计划 

 3 mysql Workbench里保存执行计划为图片并查看。

以上是关于用mysql Workbench查看执行计划的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL Workbench 中隐藏/查看结果网格?

如何在 MySQL Workbench 中直接查看 blob

如何在 MySQL Workbench 中使用 Python 脚本执行 SQL 查询

MYSQL explain执行计划

如何查看执行计划

如何查看mysql定时任务计划