加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

很清晰的Explain总结,妈妈再也不担心我的SQL优化了

发布时间:2021-06-09 11:41:54 所属栏目:创业 来源:互联网
导读:在 select 语句之前增进 explain 要害字,MySQL 会在查询上配置一个标志,执行查询时,会返回执行打算的信息,而不是执行这条SQL(假如 from 中包括子查询,仍会

在 select 语句之前增进 explain 要害字,MySQL 会在查询上配置一个标志,执行查询时,会返回执行打算的信息,而不是执行这条SQL(假如 from 中包括子查询,仍会执行该子查询,将功效放入姑且表中)

CREATE TABLE `film` ( 

  `id` int(11) NOT NULL AUTO_INCREMENT, 

  `name` varchar(10) DEFAULT NULL, 

  PRIMARY KEY (`id`), 

  KEY `idx_name` (`name`) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

 

 

CREATE TABLE `actor` ( 

  `id` int(11) NOT NULL, 

  `name` varchar(45) DEFAULT NULL, 

  `update_time` datetime DEFAULT NULL, 

  PRIMARY KEY (`id`) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

 

 

CREATE TABLE `film_actor` ( 

  `id` int(11) NOT NULL, 

  `film_id` int(11) NOT NULL, 

  `actor_id` int(11) NOT NULL, 

  `remark` varchar(255) DEFAULT NULL, 

  PRIMARY KEY (`id`), 

  KEY `idx_film_actor_id` (`film_id`,`actor_id`) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8 

两个变种

explain extended

会在 explain 的基本上特殊提供一些查询优化的信息。紧随厥后通过 show warnings 呼吁可以 获得优化后的查询语句,从而看出优化器优化了什么。特殊尚有 filtered 列,是一个半分比的值,rows * filtered/100 可以估算出将要和 explain 中前一个表举办毗连的行数(前一个表指 explain 中的id值比当前表id值小的表)

mysql> explain extended select * from film where id =  

explain partitions

对比 explain 多了个 partitions 字段,假如查询是基于分区表的话,会表现查询将会见的分区。

id列

id列的编号是 select 的序列号,有几个 select 就有几个id,而且id的次序是按 select 呈现的次序增添的。 MySQL将 select 查询分为简朴查询(SIMPLE)和伟大查询(PRIMARY)。 伟大查询分为三类:简票据查询、派生表(from语句中的子查询)、union 查询。 id列越大执行优先级越高,id沟通则从上往下执行,id为NULL最后执行**

select_type列

select_type 暗示对应行是简朴照旧伟大的查询,假如是伟大的查询,又是上述三种伟大查询中的哪一种。 1.simple简朴查询。查询不包括子查询和union

(编辑:湖南网)

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

    热点阅读