CREATE STATISTICS
功能描述
在当前数据库中为表创建一个扩展统计信息对象,该对象由命令的执行者所有。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。
注意事项
- 目前该命令仅支持创建表达式统计信息。
- 不支持对临时表创建表达式统计信息。
- 不支持在表的分区上创建表达式统计信息。
- 不支持对包含聚集函数、子查询、窗口函数、返回集合类型的表达式创建统计信息。
语法格式
1 2 3 |
CREATE STATISTICS [ IF NOT EXISTS ] statistics_name ON ( expression ) [, ...] FROM table_name |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
statistics_name |
新统计信息对象的名称。 |
字符串,需符合标识符命名规范。 |
expression |
要收集统计信息的表达式,支持单个或多个表达式,多个表达式通过逗号分隔。 |
- |
table_name |
用于收集统计信息的表名。 |
- |
示例
创建示例表并插入数据。
CREATE TABLE t1_row(id int, dt timestamp) WITH (orientation = row) DISTRIBUTE BY HASH (id); INSERT INTO t1_row values (generate_series(1, 721), generate_series('2023-01-01'::timestamp, '2023-01-31'::timestamp, '1 hour'::interval));
为表创建一个表达式统计信息对象,使用ANALYZE命令收集统计信息。
CREATE STATISTICS s1_t1_row ON EXTRACT(HOUR FROM dt), EXTRACT(DAY FROM dt) FROM t1_row; ANALYZE t1_row;
SET enable_fast_query_shipping = OFF; EXPLAIN VERBOSE SELECT * FROM t1_row WHERE EXTRACT(HOUR FROM dt) BETWEEN 0 AND 12;