其他

ANALYZE

规则

ANALYZE table_name

描述

对表进行预分析,统计数据表的记录数,最大值、最小值等统计信息。

示例:

analyze order;

SHOW STATS

规则

SHOW STATS FOR (SQL_STATEMENT)

描述

支持对任意查询语句的统计信息支持。

示例:

SHOW STATS FOR (SELECT i_current_price,i_brand_id,i_brand FROM ITEM);
SHOW STATS FOR (SELECT * FROM web_sales, date_dim WHERE ws_ship_date_sk = d_date_sk);

SET TIME ZONE

规则

SET TIME ZONE [ZONE]

描述

可在会话属性中设置timezone。需要注意,如果全局配置了sql.forced-session-time-zone属性,则在会话属性中自定义tiemzone将无法生效。

示例:

SET TIME ZONE LOCAL;
SET TIME ZONE '-06:00';
SET TIME ZONE 'Asia/Shanghai';
-- 查看当前timezone
select current_timezone();

SET SESSION

规则

SET SESSION name = expression
SET SESSION catalog.name = expression

描述

设置会话属性值或catalog会话属性。

示例:

SET SESSION task_concurrency=16

SET PATH

规则

SET PATH catalog.schema 

描述

设置会话路径,指定路径必须存在。

示例

SET PATH hubble.Demo1;

RESET SESSION

规则

RESET SESSION name 

描述

将会话属性值重置为默认值。

示例

RESET SESSION task_concurrency

DESCRIBE INPUT

规则

DESCRIBE INPUT name 

描述

列出预准备语句的输入参数以及 每个参数的位置和类型。不确定的类型会显示unknown

示例

准备带有参数的查询

PREPARE mytestdesc1 FROM SELECT name FROM tab_1 where id=? and pid=? 

列出信息

DESCRIBE INPUT mytestdesc1

 Position | Type 
----------+------
 0        | unknown
 1        | int
 2        | varchar

准备不带有参数的查询

PREPARE mytestdesc2 FROM SELECT * FROM tab_1

列出信息

DESCRIBE INPUT mytestdesc2

 Position | Type 
----------+------

DESCRIBE OUTPUT

规则

DESCRIBE INPUT name 

描述

列出预准备语句的输出参数列包括列名、数据源、库名、表、字段类型、类型大小以及是否具有布尔值。

示例

准备带有输出列的查询

PREPARE mytestdesc3 FROM SELECT name FROM tab_1  

列出信息

DESCRIBE OUTPUT mytestdesc3

 Column Name | Catalog | Schema | Table |    Type     | Type Size | Aliased 
-------------+---------+--------+-------+-------------+-----------+---------
 id          | hubble  | zl     | p1    | varchar(32) |         10 | false   
 name        | hubble  | zl     | p1    | varchar(30) |         18 | false   
 pid         | hubble  | zl     | p1    | varchar(32) |         10 | false

DEALLOCATE PREPARE

规则

DEALLOCATE PREPARE name 

描述

从准备列表里删除具有该名称的语句。

示例

准备名为mytestdesc4的查询

PREPARE mytestdesc4 FROM SELECT name FROM tab_1

删除mytestdesc4

DEALLOCATE PREPARE mytestdesc4

WITH RECURSIVE 递归查询

规则

-- 设置递归遍历深度 ,深度越大执行时间越久
set session max_recursion_depth = 5;
-- 规则
WITH RECURSIVE recursive_table_name (column1, column2, ...) AS (
    -- 非递归的初始部分
    SELECT ... FROM ...
    UNION ALL
    -- 递归部分
    SELECT ... FROM recursive_table_name JOIN ... ON ...
)
SELECT * FROM recursive_table_name;



示例

-- 设置递归遍历深度 ,深度越大执行时间越久
set session max_recursion_depth = 5;

WITH RECURSIVE gr(id,name,pid,level) AS (
-- 初始查询:选择根机构(假设根机构的 pid 为 NULL)
SELECT id,name,pid,1 as level FROM jg1 where pid= '0'
UNION ALL    
--递归查询:选择子机构
SELECT o.id,o.name,o.pid,s.level + 1 as level FROM jg1 o  INNER JOIN gr s ON o.pid = s.id
)
select * from gr order by level asc;

-- 重置 遍历深度;
RESET SESSION max_recursion_depth;