---
title: "SET_INDEX_STATS - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: SET_INDEX_STATS SET_INDEX_STATS 过程用于设置与索引相关的信息。 功能适用性 该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。 语法 DBMS_STATS.SET_INDEX_STATS ( ownname VARCHAR2, …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# SET_INDEX_STATS

更新时间：2026-04-10 11:58:36

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/700.reference/500.sql-reference/300.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/15900.dbms-stats-oracle/3600.set-index-stats-oracle.md)  

`SET_INDEX_STATS` 过程用于设置与索引相关的信息。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。

## 语法

```sql
DBMS_STATS.SET_INDEX_STATS (
  ownname            VARCHAR2,
  indname            VARCHAR2,
  partname           VARCHAR2  DEFAULT NULL,
  numrows            NUMBER    DEFAULT NULL,
  no_invalidate      BOOLEAN   DEFAULT FALSE,
  force              BOOLEAN   DEFAULT FALSE,
  avgrlen            NUMBER    DEFAULT NULL,
  nummacroblks       NUMBER    DEFAULT NULL,
  nummicroblks       NUMBER    DEFAULT NULL,
  tabname            VARCHAR2  DEFAULT NULL);

```

## 参数说明

| 参数 | 解释 |
| --- | --- |
| ownname | 用户名。如果用户名设置为 `NULL`，会默认使用当前登录用户名。 |
| indname | 索引名称。 |
| partname | 分区名称。 |
| numrows | 索引中的行数（分区）。 |
| no_invalidate | 收集统计信息是否刷 Plan Cache。设置为 `TRUE` 表示收集统计信息时不刷 Plan Cache。 |
| force | 是否强制设置索引统计信息，并忽略锁的状态。默认为 `FALSE`。 如果设置为 `TRUE`，即使统计信息被锁定，也会设置索引统计信息。 |
| avgrlen | 索引表的平均行长（以字节为单位）。 |
| nummacroblks | 索引表宏块数。 |
| nummicroblks | 索引表的微块数。 |
| tabname | 表名称。 |

## 异常情况

| 错误码 | 描述 |
| --- | --- |
| ORA-20000 | 该对象不存在或权限不足。 |
| ORA-20001 | 无效的输入值。 |
| ORA-20005 | 该对象的统计信息被锁定。 |

## 使用说明

- 要调用此过程，必须是表的所有者。对于由 `SYS` 所拥有的对象，需要是表的所有者或具有 `SYSDBA` 权限才能调用此过程。
 - 优化器通过缓存数据来估计索引或统计表访问的缓存块数。操作的总成本包括从磁盘读取未缓存块的 I/O 成本、从缓冲区中获取缓存块的 CPU 成本以及处理数据的 CPU 成本。
 - 对于取值为 `TRUE` 和 `FALSE` 的参数，需要在 `BEGIN ... END` 块中执行该过程。

## 示例

设置用户 `testUser01` 的索引 `idx1` 的相关信息。

```sql
obclient> CALL DBMS_STATS.SET_INDEX_STATS('testUser01', 'idx1', numrows=>10, avgrlen=>10，'tbl1');
Query OK, 0 rows affected

```

#### 说明

OceanBase 数据库 Oracle 模式下无需指定 `tabname`，因为索引在当前用户下是唯一的，但是 MySQL 模式需要显式指定表名，因为索引在当前用户下是非唯一的。

  上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
