ClickHouse查看执行计划(EXPLAIN语法)

这篇具有很好参考价值的文章主要介绍了ClickHouse查看执行计划(EXPLAIN语法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.EXPLAIN 语法示例

EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE] [setting = value, ...]
    [
      SELECT ... |
      tableFunction(...) [COLUMNS (...)] [ORDER BY ...] [PARTITION BY ...] [PRIMARY KEY] [SAMPLE BY ...] [TTL ...]
    ]
    [FORMAT ...]

查询计划的类型说明:
 AST(抽象语法树):在AST级别优化之后的查询文本 
 SYNTAX(语法优化):在AST级别优化之后的查询文本,返回优化后的sql 
 QUERY TREE(查询树):在查询树级别优化之后的查询树
 PLAN(执行计划):查询执行计划,默认是此值
 PIPELINE(管道):查询执行管道

1.1AST(抽象语法树)

查询语法树执行计划

explain AST SELECT
            path,code,v1
        FROM
            autorun_t_index
        WHERE
            index_id = 1227
          AND cluster_id =27
          AND code IN('queue_name', 'queue_allocatedmb', 'queue_availablemb','queue_allocatedvcores','queue_availablevcores')
          AND update_date IN(SELECT MAX(update_date) FROM autorun_t_index WHERE index_id = 1227 AND cluster_id = 27 and update_date <='2023-08-04 01:38:48')

展示结果:

  SelectQuery (children 3)
   ExpressionList (children 3)
    Identifier path
    Identifier code
    Identifier v1
   TablesInSelectQuery (children 1)
    TablesInSelectQueryElement (children 1)
     TableExpression (children 1)
      TableIdentifier autorun_t_index
   Function and (children 1)
    ExpressionList (children 4)
     Function equals (children 1)
      ExpressionList (children 2)
       Identifier index_id
       Literal UInt64_1227
     Function equals (children 1)
      ExpressionList (children 2)
       Identifier cluster_id

       Literal UInt64_27
     Function in (children 1)
      ExpressionList (children 2)
       Identifier code
       Literal Tuple_('queue_name', 'queue_allocatedmb', 'queue_availablemb', 'queue_allocatedvcores', 'queue_availablevcores')
     Function in (children 1)
      ExpressionList (children 2)
       Identifier update_date
       Subquery (children 1)
        SelectWithUnionQuery (children 1)
         ExpressionList (children 1)
          SelectQuery (children 3)
           ExpressionList (children 1)
            Function MAX (children 1)
             ExpressionList (children 1)

              Identifier update_date
           TablesInSelectQuery (children 1)
            TablesInSelectQueryElement (children 1)
             TableExpression (children 1)
              TableIdentifier autorun_t_index
           Function and (children 1)
            ExpressionList (children 3)
             Function equals (children 1)
              ExpressionList (children 2)
               Identifier index_id
               Literal UInt64_1227
             Function equals (children 1)
              ExpressionList (children 2)
               Identifier cluster_id
               Literal UInt64_27
             Function lessOrEquals (children 1)
              ExpressionList (children 2)
               Identifier update_date
               Literal '2023-08-04 01:38:48'
 Identifier TabSeparatedWithNamesAndTypes

1.2SYNTAX(语法优化)

语法优化前执行sql

explain SYNTAX  SELECT
            path,code,v1
        FROM
            autorun_t_index
        WHERE
            index_id = 1227
          AND cluster_id =27
          AND code IN('queue_name', 'queue_allocatedmb', 'queue_availablemb','queue_allocatedvcores','queue_availablevcores')
          AND update_date IN(SELECT MAX(update_date) FROM autorun_t_index WHERE index_id = 1227 AND cluster_id = 27 and update_date <='2023-08-04 01:38:48')

语法优化后推荐的sql

SELECT
    path,
    code,
    v1
FROM autorun_t_index
WHERE (index_id = 1227) AND (cluster_id = 27) AND (code IN ('queue_name', 'queue_allocatedmb', 'queue_availablemb', 'queue_allocatedvcores', 'queue_availablevcores')) AND (update_date IN ((
    SELECT max(update_date)
    FROM autorun_t_index
    WHERE (index_id = 1227) AND (cluster_id = 27) AND (update_date <= '2023-08-04 01:38:48')
) AS _subquery132))

1.3QUERY TREE(查询树)

1.4PLAN(执行计划)

默认值就是PLAN,一般用来查看sql的执行计划,是否使用引擎,分区,索引等信息

未添加索引前

explain  PLAN  SELECT
            path,code,v1
        FROM
            autorun_t_index
        WHERE
            index_id = 1227
          AND cluster_id =27
          AND code IN('queue_name', 'queue_allocatedmb', 'queue_availablemb','queue_allocatedvcores','queue_availablevcores')
          AND update_date IN(SELECT MAX(update_date) FROM autorun_t_index WHERE index_id = 1227 AND cluster_id = 27 and update_date <='2023-08-04 01:38:48')

未添加索引查询计划

Expression (Projection)
  CreatingSets (Create sets before main query execution)
    Expression (Before ORDER BY)
      Filter (WHERE)
        SettingQuotaAndLimits (Set limits and quota after reading from storage)
          ReadFromStorage (Log)
    CreatingSet (Create set for subquery)
      Expression ((Projection + Before ORDER BY))
        Aggregating
          Expression (Before GROUP BY)
            Filter (WHERE)
              SettingQuotaAndLimits (Set limits and quota after reading from storage)
                ReadFromStorage (Log)

添加引擎,分区后优化结果

Expression ((Projection + Before ORDER BY))
  SettingQuotaAndLimits (Set limits and quota after reading from storage)
    ReadFromMergeTree

1.5PIPELINE(管道)

官网示例

EXPLAIN PIPELINE SELECT sum(number) FROM numbers_mt(100000) GROUP BY number % 4;

执行结果:

(Expression)
ExpressionTransform
  (Aggregating)
  Resize 4 → 1
    AggregatingTransform × 4
      (Expression)
      ExpressionTransform × 4
        (SettingQuotaAndLimits)
          (ReadFromStorage)
          NumbersMt × 4 0 → 1


 文章来源地址https://www.toymoban.com/news/detail-644639.html

到了这里,关于ClickHouse查看执行计划(EXPLAIN语法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL优化之EXPLAIN执行计划

    从今天开始本系列文章就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1965】字 ,不说废话,只讲可以让你学到技术、明

    2024年02月07日
    浏览(76)
  • 玩转MySQL之SQL优化之EXPLAIN执行计划

    从今天开始本系列文章就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1965】字 ,不说废话,只讲可以让你学到技术、明

    2024年02月08日
    浏览(55)
  • MYSQL EXPLAIN 执行计划

    有了慢查询语句后,就要对语句进行分析。一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。

    2024年02月05日
    浏览(46)
  • Mongo执行计划explain分析

    3.0+的explain有三种模式,分别是:queryPlanner、executionStats、allPlansExecution。现实开发中,常用的是 executionStats模式 。 在查询语句后面加上explain(\\\"executionStats\\\")   第一层:executionTimeMillis  最为直观explain返回值是 executionTimeMillis值 ,指的是我们 这条语句的执行时间 ,这个值当然

    2024年02月04日
    浏览(58)
  • 超级详解MySQL执行计划explain

            要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。          MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客

    2023年04月15日
    浏览(40)
  • MySQL的执行计划详解(Explain)

    在 MySQL 中可以通过 explain 模拟优化器执行 SQL语句,从而知道 MySQL 是如何处理 SQL 语句的。 • 客户端向 MySQL 服务器发送一条查询请求 • 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段 • 服务器进行 SQL 解析、预处理、

    2023年04月26日
    浏览(53)
  • MongoDB索引操作和执行计划Explain()详解

    主要是讲下Mongodb的索引的查看、创建、删除、类型说明,还有就是Explain执行计划的解释说明。    可以转载,但请注明出处。    之前自己写的SpringBoot整合MongoDB的聚合查询操作,感兴趣的可以点击查阅。 https://www.cnblogs.com/zaoyu/p/springboot-mongodb.html 数组相关的操作 https://ww

    2024年02月13日
    浏览(33)
  • Mysql中explain执行计划信息中字段详解

    2.1 id 每个select子句的执行顺序,相同从上到下,不同由大到小执行 2.2 select_type select语句类型 SIMPLE 简单的select查询,查询中不包含子查询或者UNION PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY SUBQUERY 在SELECT或WHERE列表中包含了子查询 DERIVED 在FROM列表中包

    2024年02月10日
    浏览(41)
  • 【MySQL数据库 | 第二十篇】explain执行计划

    目录  前言: explain:  语法: 总结:         上一篇我们介绍了从时间角度分析MySQL语句执行效率的三大工具:SQL执行频率,慢日志查询,profile。但是这三个方法也只是在时间角度粗略的查看SQL语句效率,我们要想看一个语句的真正性能,还要借助explain来查看SQL语句的优

    2024年02月11日
    浏览(48)
  • 一文带你了解MySQL之Explain执行计划

    前言: 一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的 执行计划 ,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。 MySQL 为我们提供了 EXPLAIN 语句来帮助

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包