更新时间:2025-09-25 GMT+08:00
分享

CREATE STATISTICS

功能描述

在当前数据库中为表创建一个扩展统计信息对象,该对象由命令的执行者所有。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。

注意事项

  • 目前该命令仅支持创建表达式统计信息。
  • 不支持对临时表创建表达式统计信息。
  • 不支持在表的分区上创建表达式统计信息。
  • 不支持对包含聚集函数、子查询、窗口函数、返回集合类型的表达式创建统计信息。

语法格式

1
2
3
CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
    ON ( expression ) [, ...]
    FROM table_name

参数说明

表1 CREATE STATISTICS参数说明

参数

描述

取值范围

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;

相关链接

DROP STATISTICS

相关文档