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 | 存储统计信息的表分区的名称。如果表已分区且 partname 为 NULL,则统计信息存储在全局表级别。 |
| distcnt | 列级的 NDV 值。 |
| density | 列级的稠密度。如果此值为 NULL 且 distcnt 不为 NULL,则密度值为 distcnt。 |
| nullcnt | 列级的 NULL 值个数。 |
| avgclen | 列级的平均长度(以字节为单位)。 |
| no_invalidate | 收集统计信息是否刷 Plan Cache。设置为 TRUE 表示收集统计信息时不刷 Plan Cache。 |
| force | 是否强制收集,并忽略锁的状态。默认为 FALSE。如果设置为 TRUE,即使统计信息被锁定,也会收集统计信息。 |
异常情况
| 错误码 | 描述 |
|---|---|
| HY000 |
|
使用说明
seekdb 在处理用户自定义统计信息时,SET_COLUMN_STATS 指定的统计信息类型只能是存储在字典中的类型。如果此统计类型为 NULL,则存储与索引或列关联的统计类型。
要调用此过程,必须是表的所有者。
示例
设置用户 testUser01 的表 tbl1 的 col1 列的 NDV 为 10,NULL 值个数为 10。
CALL DBMS_STATS.SET_COLUMN_STATS('testUser01', 'tbl1', 'col1', distcnt=>10, nullcnt=>10);
Query OK, 0 rows affected