---
title: "GATHER_INDEX_STATS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: GATHER_INDEX_STATS GATHER_INDEX_STATS 过程用于收集索引统计信息。 功能适用性 该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持。 语法 DBMS_STATS.GATHER_INDEX_STATS ( ownname VARCHAR2, i…
---
切换语言

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

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

# GATHER_INDEX_STATS

更新时间：2026-03-30 15:35:54

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/600.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/15900.dbms-stats-oracle/1600.gather-index-stats-oracle.md)  

`GATHER_INDEX_STATS` 过程用于收集索引统计信息。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持。

## 语法

```sql
DBMS_STATS.GATHER_INDEX_STATS (
  ownname            VARCHAR2,
  indname            VARCHAR2,
  partname           VARCHAR2 DEFAULT NULL,
  estimate_percent   NUMBER DEFAULT AUTO_SAMPLE_SIZE,
  stattab            VARCHAR2 DEFAULT NULL,
  statown            VARCHAR2 DEFAULT NULL,
  degree             NUMBER DEFAULT NULL,
  granularity        VARCHAR2 DEFAULT DEFAULT_GRANULARITY,
  no_invalidate      BOOLEAN DEFAULT FALSE,
  force              BOOLEAN DEFAULT FALSE,
  tabname            VARCHAR2 DEFAULT NULL
);

```

## 参数说明

| 参数 | 解释 |
| --- | --- |
| ownname | 用户名。如果用户名设置为 `NULL`，会默认使用当前登录用户名。 |
| indname | 索引名称。 |
| partname | 分区名称。 |
| estimate_percent | 预估行的百分比。 有效范围为 [0.000001,100]。 |
| stattab | 指定存储统计信息用户表的表名。 |
| statown | 指定存储统计信息用户表的用户名称。 |
| degree | 并行度。默认值是 `NULL`。`NULL` 表示使用由 `CREATE TABLE` 或 `ALTER TABLE` 语句中的 `DEGREE` 子句指定的表默认值。当使用 `DEGREE=>NULL`、`DEGREE=>n` 时，如果对象的大小不保证实现并行执行，则 `DBMS_STATS` 可能会采用串行执行。 |
| granularity | 要收集的索引统计信息的粒度（仅适用于当表已分区时）。   - `ALL`：收集所有（子分区、分区和全局）索引统计信息。 - `APPROX_GLOBAL AND PARTITION`： 类似于 `GLOBAL AND PARTITION`，但在这种情况下，全局索引统计信息是分区级别统计信息的汇总。此选项将汇总不同值的数量和索引不同键的数量之外的所有索引统计信息。但只汇总带有索引统计信息的分区。如果 `partname` 为 `NULL` 或无法执行汇总（例如缺少其中一个分区的索引统计信息），则会收集全局索引统计信息。 - `AUTO`：根据分区类型确定粒度。它是默认值。 - `DEFAULT`：收集全局和分区级别的索引统计信息。此选项已废弃，建议使用 `GLOBAL AND PARTITION`。 - `GLOBAL`：收集全局索引统计数据。 - `GLOBAL AND PARTITION`：收集全局和分区级别的索引统计信息。即使是复合分区对象，也不会收集子分区级别的索引统计信息。 - `PARTITION`：收集分区级别的索引统计信息。 - `SUBPARTITION`：收集子分区级别的索引统计信息。 |
| no_invalidate | 收集统计信息时是否刷 Plan Cache。设置为 `TRUE` 表示收集统计信息时不刷 Plan Cache。 |
| force | 是否强制收集，并忽略锁的状态。默认为 `FALSE`。如果设置为 `TRUE`，即使统计信息被锁定，也会收集索引统计信息。 |
| tabname | 表名称。 |

## 异常情况

| 错误码 | 描述 |
| --- | --- |
| OBE-20000 | 该索引不存在或权限不足。 |
| OBE-20001 | 输入值错误。 |

## 使用说明

要调用此过程，必须是表的所有者。对于使用由 `SYS` 所拥有的对象，需要是表的所有者或具有 `SYSDBA` 权限才能调用此过程。

## 示例

收集用户 `testUser01` 的 `tbl1` 表的索引 `idx1` 的统计信息。

```sql
obclient> CALL DBMS_STATS.GATHER_INDEX_STATS('testUser01', 'idx1', degree=>4, 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) 咨询热线
