规则
ANALYZE table_name
描述
对表进行预分析,统计数据表的记录数,最大值、最小值等统计信息。
示例:
analyze order;
规则
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 [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 name = expression
SET SESSION catalog.name = expression
描述
设置会话属性值或catalog会话属性。
示例:
SET SESSION task_concurrency=16
规则
SET PATH catalog.schema
描述
设置会话路径,指定路径必须存在。
示例:
SET PATH hubble.Demo1;
规则
RESET SESSION name
描述
将会话属性值重置为默认值。
示例:
RESET SESSION task_concurrency
规则
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 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 name
描述
从准备列表里删除具有该名称的语句。
示例:
准备名为mytestdesc4
的查询
PREPARE mytestdesc4 FROM SELECT name FROM tab_1
删除mytestdesc4
DEALLOCATE PREPARE mytestdesc4
规则
-- 设置递归遍历深度 ,深度越大执行时间越久
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;