重庆百度搜索排名优化,信阳seo优化顾问,dw网页制作素材免费,青岛最新通知在clickhouse 20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到#xff0c;并且只能真正执行sql#xff0c;在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能。 本文档基于目前较新稳定版21.7.3.14。 1.基… 在clickhouse 20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到并且只能真正执行sql在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能。 本文档基于目前较新稳定版21.7.3.14。 1.基本语法 EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting value, ...] SELECT ... [FORMAT ...] PLAN用于查看执行计划默认值。 header 打印计划中各个步骤的 head 说明默认关闭默认值0;description 打印计划中各个步骤的描述默认开启默认值1actions 打印计划中各个步骤的详细信息默认关闭默认值0。AST 用于查看语法树;SYNTAX用于优化语法;PIPELINE用于查看 PIPELINE 计划。 header 打印计划中各个步骤的 head 说明默认关闭;graph 用DOT图形语言描述管道图默认关闭需要查看相关的图形需要配合graphviz查看actions 如果开启了graph紧凑打印打默认开启。 注PLAN 和 PIPELINE 还可以进行额外的显示设置如上参数所示。 2. 新版本使用 EXPLAIN 可以再安装一个20.6以上版本或者直接在官网的在线demo选择高版本进行测试。 官网在线测试链接https://play.clickhouse.tech/?filewelcome 1查看PLAIN 简单查询 explain plan select arrayJoin([1,2,3,null,null]); 复杂SQL的执行计划 explain select database,table,count(1) cnt from system.parts where database in (datasets,system) group by database,table order by database,cnt desc limit 2 by database; 打开全部的参数的执行计划 EXPLAIN header1, actions1,description1 SELECT number from system.numbers limit 10; 2AST语法树 EXPLAIN AST SELECT number from system.numbers limit 10; 3SYNTAX语法优化 //先做一次查询
SELECT number 1 ? hello : (number 2 ? world : atguigu) FROM numbers(10);
//查看语法优化
EXPLAIN SYNTAX SELECT number 1 ? hello : (number 2 ? world : atguigu) FROM numbers(10);//开启三元运算符优化
SET optimize_if_chain_to_multiif 1;
//再次查看语法优化
EXPLAIN SYNTAX SELECT number 1 ? hello : (number 2 ? world : atguigu) FROM numbers(10);//返回优化后的语句
SELECT multiIf(number 1, \hello\, number 2, \world\, \xyz\)
FROM numbers(10) 4查看PIPELINE EXPLAIN PIPELINE SELECT sum(number) FROM numbers_mt(100000) GROUP BY number % 20;//打开其他参数
EXPLAIN PIPELINE header1,graph1 SELECT sum(number) FROM numbers_mt(10000) GROUP BY number%20;3. 老版本查看执行计划 clickhouse-client -h 主机名 --send_logs_leveltrace sql /dev/null 其中send_logs_level参数指定日志等级为trace将SQL语句重定向至clickhouse-client进行查询 /dev/null将查询结果重定向到空设备吞掉以便观察日志。 注意 1、通过将ClickHouse的服务日志设置到DEBUG或者TRACE级别才可以变相实现EXPLAIN查询的作用。 2、需要真正的执行SQL查询CH才能打印计划日志所以如果表的数据量很大最好借助LIMIT子句减小查询返回的数据量。