---
title: "SET_INDEX_STATS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: SET_INDEX_STATS SET_INDEX_STATS 过程用于设置与索引相关的信息。 语法 DBMS_STATS.SET_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, numrows NUM…
---
切换语言

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

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

# SET_INDEX_STATS

更新时间：2026-03-19 13:14:16

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/600.pl-reference/200.pl-mysql/1000.pl-system-package-mysql/15900.dbms-stats-mysql/3600.set-index-stats-mysql.md)  

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

## 语法

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

```

## 参数说明

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

## 异常情况

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

## 使用说明

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

## 示例

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

```sql
obclient> CALL DBMS_STATS.SET_INDEX_STATS('testUser01', 'idx1', numrows=>10, avgrlen=>10,
    tabname=>'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) 咨询热线
