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


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34786.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

途樂證券-最準確的KDJ改良指標?

KDJ目標是技術剖析的一種重要目標之一&#xff0c;它是利用隨機目標&#xff08;%R&#xff09;發展而來的&#xff0c;是一種反映商場超買和超賣狀況的買賣目標。KDJ目標由快線&#xff08;K線&#xff09;、慢線&#xff08;D線&#xff09;和隨機值&#xff08;J線&#xff…

RestTemplate HTTPS請求忽略SSL證書

問題描述 使用RestTemplate發送HTTPS請求的時候&#xff0c;出現了這樣的一個問題&#xff1a; sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification …

MySQL多表查詢

1.創建student和score表 創建score表 2.為student表和score表增加記錄 向student表插入記錄的INSERT語句如下&#xff1a; 向score表插入記錄的INSERT語句如下&#xff1a; 1.查詢student表的所有記錄 2.查詢student表的第2條到4條記錄 3.從student表查詢所有學生的學號&#…

2023最新影視泛目錄系統,蘋果cms最新下載地址

影視泛目錄系統是指一種集成了電影、電視劇、綜藝節目、動漫等多種影視資源資源的系統&#xff0c;其目的是為用戶提供一個方便快捷的影視資源檢索、瀏覽、分享、評論的平臺。該系統通過對影視資源進行分類、標簽化、評分等方式&#xff0c;為用戶提供更加精準的檢索和推薦服務…

C#多線程學習 生產者和消費者

前面說過&#xff0c;每個線程都有自己的資源&#xff0c;但是代碼區是共享的&#xff0c;即每個線程都可以執行相同的函數。這可能帶來的問題就是幾個線程同時執行一個函數&#xff0c;導致數據的混亂&#xff0c;產生不可預料的結果&#xff0c;因此我們必須避免這種情況的發…

mousedown拖拽功能(vue3+ts)

因為項目有rem適配&#xff0c;使用第三方插件無法處理適配問題&#xff0c;所有只能自己寫拖拽功能了 拖拽一般都會想到按下&#xff0c;移動&#xff0c;放開&#xff0c;但是本人親測&#xff0c;就在div綁定一個按下事件就行了&#xff08;在事件里面寫另外兩個事件&#x…

爬蟲ip池越大越好嗎?

作為一名資深的程序員&#xff0c;今天我要給大家分享一些關于爬蟲ip池的知識。關于ip代理池的問題&#xff0c;答案是肯定的&#xff0c;池子越大越好。下面跟我一起來盤點一下ip池大的好處吧&#xff01; 1、提高穩定性 爬蟲ip池越大&#xff0c;意味著擁有更多可用的爬蟲ip…

「C/C++」C/C++搭建程序框架

?博客主頁何曾參靜謐的博客&#x1f4cc;文章專欄「C/C」C/C程序設計&#x1f4da;全部專欄「UG/NX」NX二次開發「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序設計「C/C」C/C程序設計「Win」Windows程序設計「DSA」數據結構與算法「File」數據文件格式 目錄 1. 分離職…

Flume原理剖析

一、介紹 Flume是一個高可用、高可靠&#xff0c;分布式的海量日志采集、聚合和傳輸的系統。Flume支持在日志系統中定制各類數據發送方&#xff0c;用于收集數據&#xff1b;同時&#xff0c;Flume提供對數據進行簡單處理&#xff0c;并寫到各種數據接受方&#xff08;可定制&…

使用阿里云服務器搭建Discuz論壇網站教程基于CentOS系統

阿里云百科分享使用阿里云服務器建站教程&#xff0c;本文是搭建Discuz論壇&#xff0c;Discuz!是一款通用的社區論壇軟件系統&#xff0c;它采用PHP和MySQL組合的基礎架構&#xff0c;為您提供高效的論壇解決方案。本文介紹如何在CentOS 7操作系統的ECS實例上搭建Discuz! X3.4…

Nginx 安裝與部署

文章和代碼已經歸檔至【Github倉庫&#xff1a;https://github.com/timerring/front-end-tutorial 】或者公眾號【AIShareLab】回復 nginx 也可獲取。 文章目錄 虛擬機安裝CentOS7.4Linux配置配置上網配置靜態ip Nginx的安裝版本區別備份克隆 安裝編譯安裝報錯解決 啟動Nginx防…

topo 成績排名

題目描述 每到考試后&#xff0c;學校都會發成績表給每個學生&#xff0c;但是很多同學更關心的是自己在班級里的排名&#xff0c;可惜排名信息并沒有公開。 小雯同學很想知道這次期末考試的全班排名情況&#xff0c;但是她的同學卻不愿意告訴她自己的分數&#xff0c;只告訴她…

分布式 - 消息隊列Kafka:Kafka生產者發送消息的方式

文章目錄 1. Kafka 生產者2. kafaka 命令行操作3. kafka 生產者發送消息流程4. Kafka 生產者的創建5. Kafka 生產者發送消息1. 發送即忘記2. 同步發送3. 異步發送 6. Kafka 消息對象 ProducerRecord 1. Kafka 生產者 不管是把Kafka作為消息隊列、消息總線還是數據存儲平臺&…

wpf控件上移下移,調整子集控件顯示順序

頁面代碼: <!-- 導出A2,自定義導出設置列,添加時間:2023-8-9 14:14:18,作者:whl; --><Window x:Class="WpfSnqkGasAnalysis.WindowGasExportA2"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http:/…

git遠程倉庫的創建及使用

1.倉庫的概念&#xff1a; 1.1 本地倉庫&#xff1a; 了解遠程倉庫前我們先了解一下本地倉庫&#xff0c;本地倉庫開發人員在完成部分代碼的編寫之后&#xff0c;可以將這一部分的代碼做一個提交。這個提交完全就是一個新的版本提交&#xff0c;當然這個提交動作是在開發者的電…

CSS革命:用Sass/SCSS引領前端創新

目錄 前言SCSSSassSass 和 SCSS 的區別 前言 在現代的前端開發中&#xff0c;CSS已成為呈現網頁和應用程序樣式的核心。然而&#xff0c;原生的CSS語法在大型項目中可能變得混亂、冗長且難以維護。 為了解決這些問題&#xff0c;SCSS&#xff08;Sass CSS&#xff09;和Sass&am…

Java基礎篇--數組

目錄 聲明和初始化數組&#xff1a; 訪問和修改數組元素&#xff1a; 數組長度&#xff1a; 遍歷數組&#xff1a; 多維數組的遍歷&#xff1a; 數組的常見操作和方法&#xff1a; 拓展小知識&#xff1a; 數組是Java中的一種數據結構&#xff0c;用于存儲相同類型的多個…

B100-技能提升-線程池分布式鎖

目錄 線程池什么是線程池&#xff1f;為什么用線程池?線程池原理常見四種線程池和自定義線程池 線程池 什么是線程池&#xff1f; 池化技術 為什么用線程池? 1 由于設置最大線程數&#xff0c;防止線程過多而導致系統崩潰。 2 線程復用&#xff0c;不需要頻繁創建或銷毀…

包管理機制pip3

pip3 安裝pip3 安裝pip3 apt install python3-pip yum install python3-pip從倉庫出發的命令 查詢倉庫信息 // 獲取默認pip3源 pip3 config get global.index-url查詢所有軟件包 查詢已經安裝的所有軟件包 pip3 list從軟件包出發的命令 從軟件包名出發查詢其他信息 查詢…

230. 二叉搜索樹中第K小的元素

介紹 中序遍歷&#xff1a;左子樹 -> 中 -> 右子樹 二叉搜索樹&#xff1a;中序遍歷可以得到有序的序列 遞歸法 1.使用函數循環遞歸處理 2.使用一個數組來保存 k, 保證在個個遞歸函數中都能看到 看的變化&#xff1b;每訪問一個節點&#xff0c;這個數減一&#xff0c…