MySQL Explain关键字:`EXPLAIN ANALYZE` 的使用

MySQL Explain关键字:EXPLAIN ANALYZE 的使用

EXPLAIN ANALYZE 是什么?

MySQL 8.0.18 引入了EXPLAIN ANALYZE, 这是一个用于查询的分析工具,它会运行语句并生成EXPLAIN输出,包含计时器和迭代器的附加信息。这些信息展示了执行计划和实际执行的细节。细节提供以下信息:

  • 预计执行成本(成本模型未考虑某些迭代器,因此未包含在估计中)。
  • 估计返回的行数
  • 返回第一行的时间
  • 执行此迭代器(包括子迭代器,但不包括父迭代器)所花费的时间(以毫秒为单位)。(当有多个循环时,该图显示每个循环的平均时间。)
  • 迭代器返回的行数
  • 循环次数

返回内容只以TREE输出格式显示。

EXPLAIN ANALYZE可以与语句一起使用 SELECT,也可以与多表UPDATE和 DELETE语句一起使用。

代码示例

输出示例:

复制代码
mysql> EXPLAIN ANALYZE SELECT * FROM t1 JOIN t2 ON (t1.c1 = t2.c2)\G
*************************** 1. row ***************************
EXPLAIN: -> Inner hash join (t2.c2 = t1.c1)  (cost=4.70 rows=6)
(actual time=0.032..0.035 rows=6 loops=1)
    -> Table scan on t2  (cost=0.06 rows=6)
(actual time=0.003..0.005 rows=6 loops=1)
    -> Hash
        -> Table scan on t1  (cost=0.85 rows=6)
(actual time=0.018..0.022 rows=6 loops=1)

mysql> EXPLAIN ANALYZE SELECT * FROM t3 WHERE i > 8\G
*************************** 1. row ***************************
EXPLAIN: -> Filter: (t3.i > 8)  (cost=1.75 rows=5)
(actual time=0.019..0.021 rows=6 loops=1)
    -> Table scan on t3  (cost=1.75 rows=15)
(actual time=0.017..0.019 rows=15 loops=1)

mysql> EXPLAIN ANALYZE SELECT * FROM t3 WHERE pk > 17\G
*************************** 1. row ***************************
EXPLAIN: -> Filter: (t3.pk > 17)  (cost=1.26 rows=5)
(actual time=0.013..0.016 rows=5 loops=1)
    -> Index range scan on t3 using PRIMARY  (cost=1.26 rows=5)
(actual time=0.012..0.014 rows=5 loops=1)

示例输出中使用的表是由此处显示的语句创建的:

复制代码
CREATE TABLE t1 (
    c1 INTEGER DEFAULT NULL,
    c2 INTEGER DEFAULT NULL
);

CREATE TABLE t2 (
    c1 INTEGER DEFAULT NULL,
    c2 INTEGER DEFAULT NULL
);

CREATE TABLE t3 (
    pk INTEGER NOT NULL PRIMARY KEY,
    i INTEGER DEFAULT NULL
);

参考文档

https://dev.mysql.com/doc/refman/8.0/en/explain.html

相关推荐
San30.1 小时前
从 Mobile First 到 AI First:用 Python 和大模型让数据库“开口说话”
数据库·人工智能·python
古城小栈1 小时前
PostgreSQL 【vs】 MySQL
数据库·mysql·postgresql
安全系统学习1 小时前
网络安全漏洞之React 框架分析
数据库·安全·web安全·网络安全
红队it1 小时前
【机器学习】python旅游数据分析可视化协同过滤算法推荐系统(完整系统源码+数据库+开发笔记+详细部署教程)✅
python·mysql·算法·机器学习·数据分析·旅游
我科绝伦(Huanhuan Zhou)1 小时前
Oracle RAC表空间从本地目录迁移至ASM磁盘组的两种实现方案
数据库·oracle
生产队队长1 小时前
Database:Navicat 连接 Oracle失败:logon denied
数据库·oracle
Misnice1 小时前
MySQL 和 PostgreSQL 的区别
数据库·mysql·postgresql
YJlio1 小时前
AI赋能编程语言:探索AI与开发的深度结合
数据库·人工智能·电脑
韩立学长1 小时前
基于协同过滤算法的宠物收养系统f27ny63s(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·算法·宠物
z***3351 小时前
【MySQL】环境变量配置
数据库·mysql·adb