• 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    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
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    参考文档

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

  • 相关阅读:
    设计模式-代理模式
    Harbor安装
    CAS: 773888-45-2_BIOTIN ALKYNE_生物素-炔基
    【Flutter】Flutter 中 http 1.0.0 使用简要说明
    【面试题 - mysql】进阶篇 - MVCC多版本并发控制原理
    选择篇(066)-下面代码的输出是什么?
    TSINGSEE青犀AI智能分析算法助力小区规范整改:楼道杂物堆放检测
    【PAT甲级 - C++题解】1093 Count PAT‘s
    休闲卤味的商业江湖里,周黑鸭的巨变与出路
    基于Taro开发京东小程序小记
  • 原文地址:https://blog.csdn.net/kaka_buka/article/details/136481879