SET_TABLE_STATS
SET_TABLE_STATS 过程用于设置表级的基本统计信息。
语法
DBMS_STATS.SET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL,
avgrlen NUMBER DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE);
参数解释
| 参数 | 解释 |
|---|---|
| ownname | 用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。 |
| tabname | 表的名称。 |
| partname | 存储统计信息的表分区的名称。 如果表已分区且 partname 为 NULL,则统计信息存储在全局表级别。 |
| numrows | 表级的总行数。 |
| numblks | 表级占用的块数。 |
| avgrlen | 列级的平均长度(以字节为单位)。 |
| no_invalidate | 收集统计信息是否刷 Plan Cache。设置为 TRUE 表示收集统计信息时不刷 Plan Cache。 |
| force | 是否强制收集,并忽略锁的状态。默认为 FALSE。如果设置为 TRUE,即使统计信息被锁定,也会收集统计信息。 |
异常情况
| 错误码 | 描述 |
|---|---|
| HY000 |
|
使用说明
-
要调用此过程,必须是表的所有者。
-
优化器通过缓存数据来估计索引或统计表访问的缓存块数。操作的总成本包括从磁盘读取未缓存块的 I/O 成本、从缓冲区中获取缓存块的 CPU 成本以及处理数据的 CPU 成本。
示例
置用户 testUser01 的表 tbl1 的总行数为一万行。
CALL DBMS_STATS.SET_TABLE_STATS('testUser01', 'tbl1', numrows=>10000, force=>FALSE, no_invalidate=>FALSE);
Query OK, 0 rows affected