Mysql——》explain执行计划

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

参考链接:官网explain-output

为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。

一、概念

一条查询语句在经过MySQL查询优化器的各种基于成本规则优化会后生成一个执行计划,从而知道MySQL是如何处理SQL语句的。

这个执行计划展示了具体执行查询的方式

  1. 多表连接的顺序是什么
  2. 对于每个表采用什么访问方法来具体执行查询

二、语法

1、适用SQL

SELECT,DELETE,INSERT,REPLACE、UPDATE

2、输出格式FORMAT

输出格式 以哪种格式显示输出 是否默认
TRADITIONAL 表格
JSON JSON

3、示例

在SQL查询的前面加上EXPLAIN关键字

-- 普通表:以表格格式显示输出
explain select * from course;

-- 普通表:以JSON格式显示输出
explain format = json select * from course;

-- 分区表:以表格格式显示输出
explain partitions select * from course;
EXPLAIN FORMAT = json select * from student where age >=3 and age <=10 and name like '%a%';

在这里插入图片描述

4、测试数据

-- 3张表:course、teacher、teacher_contact

DROP TABLE IF	EXISTS course;
CREATE TABLE `course` ( 
`cid` INT ( 3 ) DEFAULT NULL, 
`cname` VARCHAR ( 20 ) DEFAULT NULL, 
`tid` INT ( 3 ) DEFAULT NULL ) 
ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

DROP TABLE IF	EXISTS teacher;
CREATE TABLE `teacher` ( 
`tid` INT ( 3 ) DEFAULT NULL, 
`tname` VARCHAR ( 20 ) DEFAULT NULL, 
`tcid` INT ( 3 ) DEFAULT NULL ) 
ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

DROP TABLE IF	EXISTS teacher_contact;
CREATE TABLE `teacher_contact` ( 
`tcid` INT ( 3 ) DEFAULT NULL, 
`phone` VARCHAR ( 200 ) DEFAULT NULL 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

INSERT INTO `course` VALUES	( '1', 'mysql', '1' );
INSERT INTO `course` VALUES	( '2', 'jvm', '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值