ALTER STATS
描述
手动修改指定表中指定列的统计信息。请参阅统计信息章节
语法
ALTER TABLE <table_name>
[ INDEX <index_name> ]
MODIFY COLUMN <column_name>
SET STATS (<column_stats>)
其中:
column_stats
: -- column stats value
("key1" = "value1", "key2" = "value2" [...])
必选参数
-
<table_name>
: 指定表的标识符(即名称) -
<column_name>
: 指定列标识符(即名称)。在不指定 index_name 的情况下,就是基表的列名称。 -
<column_stats>
:要设置的统计信息值,以 key = value 的形式给出,key 和 value 需要用引号包裹,kv 对之间用逗号分隔。可以设置的统计信息包括:
-
row_count,总行数
-
ndv,列的基数
-
num_nulls,列的空值数量
-
data_size,列的总大小
-
min_value,列的最小值
-
max_value,列的最大值
其中 row_count 是必须指定的,其他属性为可选项。如果不设置,该列的对应统计信息属性值就为空。
-
可选参数
<index_name>
: 同步物化视图(请参阅“同步物化视图”章节)标识符(即名称)。一张表可以创建 0 到多个物化视图,如果需要设置某个物化视图中某一列的统计信息,需要使用 index_name 来制定物化视图的名称。不指定的情况下,设定的是基表中列的属性。
权限控制
执行此 SQL 命令的用户必须至少具有以下权限:
权限(Privilege) | 对象(Object) | 说明(Notes) |
---|---|---|
ALTER_PRIV | 表(Table) |
注意事项
用户手动对某张表注入统计信息后,这张表就不再参与统计信息的自动收集(请参阅“统计信息自动收集”章节),以免覆盖用户手动注入的信息。如果不再使用注入的统计信息,可以使用 drop stats 语句删掉已经注入的信息,这样可以让该表重新开启自动收集。
示例
-
给 Part 表的 p_parkey 列(基表列,因为没有指定 index_name)注入统计信息。
alter
table part
modify column p_partkey
set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000'); -
给 Part 表的 index1 物化视图的 col1 列(物化视图列,因为指定了 index_name)注入统计信息。
alter
table part index index1
modify column col1
set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000');