作者:IT王小二
一条查询 SQL 语句为什么会执行很慢?执行的时候走了什么索引?多表查询的时候 SQL 大体执行流程是怎么样的?Explain 执行计划详解给各位客官一一道来。
一、示例MySQL安装方式和版本
首先需要 MySQL 安装的客官看这两篇,小二演示使用的是 Docker 的安装方式:
小二安装完的 MySQL 数据库版本为 5.7.36。
二、Explain工具简介
通常我们在生产环境会碰到查询速度比较慢的 SQL 语句,那么怎么知道 SQL 语句为什么执行慢呢?这个时候就需要用到 Explain 执行计划来分析我们的语句了。
通过使用 Explain 关键字可以模拟优化器执行 SQL 查询语句,执行会返回执行计划的信息,而不是执行这条SQL,当然如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 。
总的来说,通过 Explain 从而知道 MySQL 是如何处理你的 SQL 语句的,分析查询语句或是表结构的性能瓶颈。那么通过 Explain 执行计划可以知道:
- 表的读取顺序
- 数据读取操作的操作类型
- 哪些索引可能被使用
- 哪些索引实际被使用
- 表之间的引用
- 每张表估计有多少行会被执行
三、本文用到的示例表
CREATE TABLE `author` (
`id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `author` (`id`, `name`, `update_time`) VALUES (1,'itwxe','2022-01-12 19:27:18'), (2,'admin','2022-01-12 19:27:18'), (3,'superAdmin','2022-01-12 19:27:18');
CREATE TABLE `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `blog

本文详细介绍了MySQL的Explain工具,用于分析SQL查询的执行计划,包括Explain的基本用法、各列信息及其意义,如id、select_type、table、type等,帮助开发者理解查询语句的执行过程和性能瓶颈。
最低0.47元/天 解锁文章
1604

被折叠的 条评论
为什么被折叠?



