基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
SET_COLUMN_STATS
更新时间:2026-11-03 16:36:52
SET_COLUMN_STATS 过程用于设置列级的基本统计信息。
语法
DBMS_STATS.SET_COLUMN_STATS (
ownname VARCHAR(65535),
tabname VARCHAR(65535),
colname VARCHAR(65535),
partname VARCHAR(65535) DEFAULT NULL,
distcnt DECIMAL(30, 10) DEFAULT NULL,
density DECIMAL(30, 10) DEFAULT NULL,
nullcnt DECIMAL(30, 10) DEFAULT NULL,
avgclen DECIMAL(30, 10) 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 |
|
使用说明
OceanBase 数据库当前版本在处理用户自定义统计信息时,SET_COLUMN_STATS 指定的统计信息类型只能是存储在字典中的类型。如果此统计类型为 NULL,则存储与索引或列关联的统计类型。
要调用此过程,必须是表的所有者。对于由 SYS 所拥有的对象,需要是表的所有者或具有 SYSDBA 权限才能调用此过程。
示例
设置用户 testUser01 的表 tbl1 的 col1 列的 NDV 为 10,NULL 值个数为 10。
obclient> CALL DBMS_STATS.SET_COLUMN_STATS('testUser01', 'tbl1', 'col1', distcnt=>10, nullcnt=>10);
Query OK, 0 rows affected