当前位置: 首页 > news >正文

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


 

相关文章:

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 ...] [T…...

线程池

线程池 什么是线程池&#xff1f; 想象一下 假设我是个漂亮妹子&#xff0c;这时候接受了舔狗A的表白&#xff0c;随着时间的推移&#xff0c;逐渐不喜欢A这小子了&#xff0c;于是我就想换个男朋友&#xff0c;可是 1.处理分手&#xff0c;需要消耗一定成本 2.再找一个新对象…...

配置:Terminal和oh-my-posh

目录 命令行安装oh-my-posh查看安装情况配置PowerShell启用oh-my-posh、设置主题配色安装字体Terminal中的配置 命令行安装oh-my-posh Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString(https://ohmy…...

数据结构--BFS求最短路

数据结构–BFS求最短路 BFS求⽆权图的单源最短路径 注&#xff1a;⽆权图可以视为⼀种特殊的带权图&#xff0c;只是每条边的权值都为1 以 2 为 b e g i n 位置 以2为begin位置 以2为begin位置 代码实现 //求顶点u到其他顶点的最短路径 void BFS_MIN_Distance(Graph G, int u…...

FPGA应用学习笔记----定点除法的gold算法流水线设计

猜一个Y0 a和b上下都Y0 分母越接近一&#xff0c;分子就越接近答案 误差&#xff1a; 下一步迭代为 Y的迭代值&#xff1a; 误差值&#xff1a; 代码的实现如上所示...

Nginx转发的原理和负载均衡

一、Nginx转发的原理 Nginx是一个高性能的反向代理服务器&#xff0c;它可以用于实现请求的转发和负载均衡。以下是Nginx转发的基本原理&#xff1a; 客户端发送请求&#xff1a;客户端向Nginx服务器发送HTTP请求。 Nginx接收请求&#xff1a;Nginx服务器接收到客户端的请求。…...

怎么换ip地址 电脑切换ip地址方法

互联网时代&#xff0c;IP地址是我们在网络上进行通信和访问的身份标识。有时候&#xff0c;我们可能需要更改IP地址&#xff0c;以便获得更好的网络体验或绕过某些限制。本文将介绍如何使用深度IP转换器来更改IP地址。 1&#xff1a;了解IP地址 IP地址是一个由数字和点组成的标…...

软件设计基础

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 软件项目管理。 在经历了软件危机和大连的软件项目失败以后&#xff0c;人们对软件工程专业的现状进行了多次分析。得出了普遍性的结论&…...

OptaPlanner笔记5

2.4 与spring boot集成 2.4.4 添加依赖 <dependency><groupId>org.optaplanner</groupId><artifactId>optaplanner-spring-boot-starter</artifactId> </dependency>2.4.8 创建求解器服务 import org.optaplanner.core.api.solver.Solv…...

PS注意事项优漫动游

PS入门注意事项AdobePhotoshop是目前最流行的平面设计软件之一。可以说&#xff0c;只要你接触平面设计&#xff0c;那么无论早晚&#xff0c;你都要和它打交道。关于Photoshop&#xff0c;要说的实在太多太多&#xff0c;但不论你想让它成为你的左膀右臂&#xff0c;或者仅仅是…...

matplotlib 判断鼠标是否点击在当前线上

在开发中有一个需求&#xff1a;对生成的一条线进行拖拽。 我将这个方法实现在线所在的类里&#xff0c;这个过程中需要判断鼠标是否点击在当前线上&#xff0c;从而实现拖拽。 实现代码如下&#xff1a; # 点击事件 def on_press(self,event):if event.inaxes ! self.ax:retur…...

bash中(冒号破折号)的用法 —— 筑梦之路

${PUBLIC_INTERFACE:-eth0} :- 的用途是什么&#xff1f; 含义&#xff1a;如果 $PUBLIC_INTERFACE 存在且不是 null&#xff0c;则返回其值&#xff0c;否则返回 "eth0"。 ${parameter:-word} 使用默认值。如果 parameter 未设置或为 null&#xff0c;则 word 的扩…...

LeetCode150道面试经典题--同构字符串(简单)

1.题目 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符上&#xff0c…...

Redis - 数据类型映射底层结构

简介 从数据类型上体现就是&#xff0c;同一个数据类型&#xff0c;在不同的情况下会使用不同的编码类型&#xff0c;底层所使用的的数据结构也不相同。 字符串对象 字符串对象的编码可以是 int、raw 和 embstr 三者之一。 embstr 编码是专门用于保存简短字符串的一种优化编…...

MySQL数据库表的增删查改 - 进阶

一&#xff0c;数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值&#xff08;自定义&#xff09;primary key - not null 和 unique 的结合&#xff0c;会给该列添加一个索引&#xff0…...

8086汇编语言工作环境 百度网盘下载

链接&#xff1a;https://pan.baidu.com/s/1-1K7gX859xejaUK70OTgtw?pwdbfa5 提取码&#xff1a;bfa5 为了方便下载&#xff0c;找了很多资料&#xff0c;也是从其他人那边分享过来的&#xff0c;也方便其他人 文件内容&#xff1a;...

ES6 解构

解构的语法 … {} 解构的语法中&#xff0c;...&#xff08;展开运算符&#xff09;和 {}&#xff08;对象字面量&#xff09;扮演着不同的角色。 ...&#xff08;展开运算符&#xff09;&#xff1a; 在解构中&#xff0c;... 被用作展开运算符&#xff0c;用于将数组或对象中…...

React三个状态时触发的相应钩子

01.初始化状态。 这个阶段由render&#xff08;&#xff09;函数触发&#xff1b; 1.constructor(); 2.componentWillMount(); 在17版本以后改为UNSAFE_componentWillMount() reason&#xff1a;react为组件异步渲染做准备&#xff1b; 3.render(); 4.componentDidMount(); 这…...

阿里云服务器部署Drupal网站教程基于CentOS系统

阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成。它用于…...

【广州华锐视点】VR燃气轮机故障判断模拟演练系统

VR燃气轮机故障判断模拟演练系统由广州华锐视点开发&#xff0c;是一款基于虚拟现实技术的教育工具&#xff0c;旨在为学生提供一个安全、高效、互动的学习环境&#xff0c;帮助他们更好地掌握燃气轮机的故障诊断技能。 这款VR实训软件能够模拟真实的燃气轮机故障诊断场景&…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...