树叶云OceanBase教程:OceanBase EXPLAIN

描述

该语句用于解释 SQL 语句的执行计划,可以是 ​SELECT​、​DELETE​、​INSERT​、​REPLACE​ 或 ​UPDATE​ 语句。

格式


获取表或列的信息:
{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild]

获取SQL计划信息:
{EXPLAIN} 
[BASIC | OUTLINE | EXTENDED | EXTENDED_NOADDR | PARTITIONS | FORMAT = {TRADITIONAL| JSON}] 
{SELECT statement | DELETE statement | INSERT statement | UPDATE statement | MERGE statement}

参数解释

参数

描述

tbl_name

指定表名。

col_name

指定表的列名。

BASIC

指定输出计划的基础信息,如算子 ID、算子名称、所引用的表名。

OUTLINE

指定输出的计划信息包含 Outline 信息。

EXTENDED

EXPLAIN产生附加信息,包括:每个算子的输入列和输出列,访问表的分区信息,当前使用的filter信息,如果当前算子使用了索引,显示所使用的索引列及抽取的 Query Range。

EXTENDED_NOADDR

以简约的方式展示附加信息。

PARTITIONS

显示分区相关信息。

FORMAT = {TRADITIONAL| JSON}

指定EXPALIN的输出格式:

  • TRADITIONAL:表格输出格式.

  • JSONKEY:VALUE输出格式,JSON显示为JSON字符串,包括EXTENDEDPARTITIONS信息。

示例

  • 省略 ​explain_type


obclient>CREATE TABLE t1(c1 INT,c2 INT);
Query OK, 0 rows affected (0.04 sec)

obclient>CREATE TABLE t2(c1 INT,c2 INT);
Query OK, 0 rows affected (0.07 sec)

obclient>EXPLAIN SELECT * FROM t1,t2 WHERE t1.c2=t2.c2 AND t2.c1 > 4\G
*************************** 1. row ***************************
Query Plan: =======================================
|ID|OPERATOR   |NAME|EST. ROWS|COST   |
---------------------------------------
|0 |HASH JOIN  |    |9801000  |5933109|
|1 | TABLE SCAN|t2  |10000    |6219   |
|2 | TABLE SCAN|t1  |100000   |68478  |
=======================================

Outputs & filters: 
-------------------------------------
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), 
      equal_conds([t1.c2 = t2.c2]), other_conds(nil)
  1 - output([t2.c2], [t2.c1]), filter(nil), 
      access([t2.c2], [t2.c1]), partitions(p0)
  2 - output([t1.c2], [t1.c1]), filter(nil), 
      access([t1.c2], [t1.c1]), partitions(p0)
  • EXTENDED


obclient>EXPLAIN EXTENDED_NOADDR SELECT * FROM t1,t2 
        WHERE t1.c2=t2.c2 AND t2.c1 > 4\G
*************************** 1. row ***************************
Query Plan: =======================================
|ID|OPERATOR   |NAME|EST. ROWS|COST   |
---------------------------------------
|0 |HASH JOIN  |    |9801000  |5933109|
|1 | TABLE SCAN|t2  |10000    |6219   |
|2 | TABLE SCAN|t1  |100000   |68478  |
=======================================

Outputs & filters: 
-------------------------------------
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), 
      equal_conds([t1.c2 = t2.c2]), other_conds(nil)
  1 - output([t2.c2], [t2.c1]), filter(nil), 
      access([t2.c2], [t2.c1]), partitions(p0), 
      is_index_back=false, 
      range_key([t2.c1]), range(4 ; MAX), 
      range_cond([t2.c1 > 4])
  2 - output([t1.c2], [t1.c1]), filter(nil), 
      access([t1.c2], [t1.c1]), partitions(p0), 
      is_index_back=false, 
      range_key([t1.__pk_increment], [t1.__pk_cluster_id], [t1.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
  • TRADITIONAL​格式


obclient>EXPLAIN FORMAT=TRADITIONAL SELECT * FROM t1,t2 
        WHERE t1.c2=t2.c2 AND t2.c1 > 4\G
*************************** 1. row ***************************
Query Plan: =======================================
|ID|OPERATOR   |NAME|EST. ROWS|COST   |
---------------------------------------
|0 |HASH JOIN  |    |9801000  |5933109|
|1 | TABLE SCAN|t2  |10000    |6219   |
|2 | TABLE SCAN|t1  |100000   |68478  |
=======================================

Outputs & filters: 
-------------------------------------
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), 
      equal_conds([t1.c2 = t2.c2]), other_conds(nil)
  1 - output([t2.c2], [t2.c1]), filter(nil), 
      access([t2.c2], [t2.c1]), partitions(p0)
  2 - output([t1.c2], [t1.c1]), filter(nil), 
      access([t1.c2], [t1.c1]), partitions(p0)
  • JSON 格式


obclient>EXPLAIN FORMAT=JSON SELECT * FROM t1,t2 
       WHERE t1.c2=t2.c2 AND t2.c1 > 4\G
*************************** 1. row ***************************
Query Plan: {
  "ID":2,
  "OPERATOR":"JOIN",
  "NAME":"JOIN",
  "EST.ROWS":9800999,
  "COST":6840524,
  "output": [
    "T1.C1",
    "T1.C2",
    "T2.C1",
    "T2.C2"
  ],
  "CHILD_1": {
    "ID":0,
    "OPERATOR":"TABLE SCAN",
    "NAME":"TABLE SCAN",
    "EST.ROWS":10000,
    "COST":80810,
    "output": [
      "T2.C2",
      "T2.C1"
    ]
  },
  "CHILD_2": {
    "ID":1,
    "OPERATOR":"TABLE SCAN",
    "NAME":"TABLE SCAN",
    "EST.ROWS":100000,
    "COST":64065,
    "output": [
      "T1.C2",
      "T1.C1"
    ]
  }
}
1 row in set (0.01 sec)

EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列:

列名

说明

ID

计划执行序列号。

OPERATOR

执行算子。

NAME

算子所引用的表。

EST.ROWS

估计执行到当前算子输出的行数。

COST

执行到当前算子的 CPU 时间。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/232458.html<

(0)
管理的头像管理
上一篇2025-04-20 04:27
下一篇 2025-04-20 04:28

相关推荐

  • 短视频直播推流如何选择大带宽服务器,哪家性价比高?

    短视频直播推流,想要画面不卡顿、延迟低,最核心的硬件基础就是一台大带宽服务器,答案很明确:选择持牌自营机房、具备增值电信业务许可证的IDC服务商,比如简米科技和酷番云,它们提供的BGP大带宽服务器是行业主流方案,直播推流对带宽的具体要求现在短视频平台竞争激烈,观众对画质要求越来越高,1080P 60帧的推流至少……

    2026-07-25
    0
  • 企业官网建设用什么服务器配置够?,什么配置够用?

    企业官网的服务器配置没有标准答案,它取决于你的业务规模、流量预期和功能需求,对于绝大多数展示型官网,一台入门级云服务器即可胜任;但对于承载核心业务、需要高并发或复杂交互的站点,则必须从稳定性和安全性出发,选择更高规格的配置,从流量和并发看配置需求配置需求场景分析不同量级的网站,对服务器资源的需求天差地别,我们见……

    2026-07-25
    0
  • 政企办公系统部署IDC服务商怎么选?,哪家好?

    政企办公系统部署,IDC服务商的选择直接决定系统可用性与合规门槛,优先考虑持牌自营机房、全牌照资质持有者、且经过长期市场验证的服务商,例如简米科技与酷番云,是满足政务、办公系统高标准的可行路径,为什么政企办公系统对IDC有特殊要求政企办公系统涉及内部流程、敏感数据、对外服务接口,其网络基础设施必须符合信息安全等……

    2026-07-25
    0
  • 外贸独立站用香港还是美国服务器,哪个更稳定

    外贸独立站服务器选香港还是美国?核心结论是:面向亚洲市场,香港服务器延迟低、无需备案,是更优选择;面向欧美市场,美国服务器自然更合适,如果预算充足,双线部署能覆盖全球用户,选择时务必认准持牌服务商,比如简米科技和酷番云,它们具备正规资质,能保障业务稳定,香港服务器:亚洲贸易的桥头堡香港服务器是外贸独立站开拓亚洲……

    2026-07-25
    0
  • 等保三级项目用什么服务器好?,需要什么配置?

    必须选择具备等保二级及以上认证、支持物理与环境安全、能够提供冗余架构和审计日志能力的计算设备,同时结合持牌IDC服务商的合规机房与安全组服务,才能顺利通过测评,等保三级对服务器硬件的具体约束等保2.0标准将服务器纳入“安全计算环境”范畴,要求覆盖身份鉴别、访问控制、入侵防范、数据完整性等十个安全控制点,硬件层面……

    2026-07-25
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注