跳到主要内容

SET_COLUMN_STATS

SET_COLUMN_STATS 过程用于设置列级的基本统计信息。

语法

DBMS_STATS.SET_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
distcnt NUMBER DEFAULT NULL,
density NUMBER DEFAULT NULL,
nullcnt NUMBER DEFAULT NULL,
avgclen NUMBER DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE);

参数解释

参数解释
ownname用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。
tabname此列所属的表的名称。
colname列名或扩展名。
partname存储统计信息的表分区的名称。如果表已分区且 partnameNULL,则统计信息存储在全局表级别。
distcnt列级的 NDV 值。
density列级的稠密度。如果此值为 NULLdistcnt 不为 NULL,则密度值为 distcnt
nullcnt列级的 NULL 值个数。
avgclen列级的平均长度(以字节为单位)。
no_invalidate收集统计信息是否刷 Plan Cache。设置为 TRUE 表示收集统计信息时不刷 Plan Cache。
force是否强制收集,并忽略锁的状态。默认为 FALSE。如果设置为 TRUE,即使统计信息被锁定,也会收集统计信息。

异常情况

错误码描述
HY000
  • 该对象不存在或权限不足。
  • 无效或不一致的值。
  • 该对象的统计信息被锁定。

使用说明

seekdb 在处理用户自定义统计信息时,SET_COLUMN_STATS 指定的统计信息类型只能是存储在字典中的类型。如果此统计类型为 NULL,则存储与索引或列关联的统计类型。

要调用此过程,必须是表的所有者。

示例

设置用户 testUser01 的表 tbl1col1 列的 NDV 为 10,NULL 值个数为 10。

CALL DBMS_STATS.SET_COLUMN_STATS('testUser01', 'tbl1', 'col1', distcnt=>10, nullcnt=>10);
Query OK, 0 rows affected