---
title: "ANALYZE - OceanBase 数据库 V5.0.1 | OceanBase 文档中心"
description: "ANALYZE 描述 该语句用于收集表或表分区的统计信息。 语法 ANALYZE TABLE table_name [, table_name, ...] ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name_list [WITH INT_NUM BUCKE…"
---
切换语言

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

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

# ANALYZE

更新时间：2026-07-29 10:39:51

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V5.0.1/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/600.sql-statement-of-mysql-mode/2000.analyze-of-mysql-mode.md)  

## 描述

该语句用于收集表或表分区的统计信息。

## 语法

```sql
ANALYZE TABLE table_name [, table_name, ...]

ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name_list [WITH INT_NUM BUCKETS]

ANALYZE TABLE table_name DROP HISTOGRAM ON column_name_list

```

当租户级配置项 `enable_sql_extension` 为 `TRUE` 时，您可以使用 Oracle 模式下的语法，如下：

```sql
ANALYZE TABLE table_name [use_partition] analyze_statistics_clause

use_partition:
    PARTITION (partition_name [, partition_name, ...])

analyze_statistics_clause:
    COMPUTE STATISTICS [opt_analyze_for_clause]
    | ESTIMATE STATISTICS [opt_analyze_for_clause] [opt_analyze_sample_clause]

opt_analyze_for_clause:
    FOR TABLE
    | for_all
    | for_columns

for_all:
    FOR ALL [INDEXED | HIDDEN] COLUMNS [opt_size_clause]

for_columns:
    FOR COLUMNS [for_columns_list]

for_columns_list:
    for_columns_item
    | for_columns_list [,] for_columns_item

for_columns_item:
    column_clause
    | size_clause
    | column_clause size_clause

column_clause:
    column_name
    | (column_name_list)

opt_size_clause:
    /* empty */
    | size_clause

size_clause:
    SIZE AUTO
    | SIZE REPEAT
    | SIZE SKEWONLY
    | SIZE number_literal

opt_analyze_sample_clause:
    /* empty */
    | SAMPLE INTNUM sample_option

sample_option:
    ROWS
    | PERCENTAGE

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| table_name | 指定要分析的表。可以指定多个表，用逗号分隔。支持跨数据库的表，格式为 `database_name.table_name`。 |
| column_name_list | 指定要更新或删除直方图的列名列表，多个列名用逗号分隔。 |
| INT_NUM | 整数，即 Buckets 的个数。取值范围是 [1,1024]。如果省略该参数，则使用默认值。有关 Buckets 的取值，请参见 [method_opt](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006621018)。 |
| use_partition | 指定分区名，格式为 `PARTITION (partition_name [, partition_name, ...])`。如果指定分区名，则只收集指定分区的统计信息；如果指定为表名，则不收集分区统计信息。 |
| analyze_statistics_clause | 指定统计信息收集方式。   - `COMPUTE STATISTICS`：计算分析对象的精确统计信息，并将其存储在数据字典中。分析表时，会同时统计表和列的统计信息。 - `ESTIMATE STATISTICS`：估计分析对象的统计信息，并将其存储在数据字典中。 |
| opt_analyze_for_clause | 指定要分析整个表，或者只分析特定的列。该参数是可选的。   - `FOR TABLE`：指定仅收集表的统计信息。 - `for_all`：指定收集所有列、所有索引列或所有隐藏列的统计信息，格式为 `FOR ALL [INDEXED \| HIDDEN] COLUMNS [opt_size_clause]`。 - `for_columns`：指定收集指定列的统计信息，格式为 `FOR COLUMNS [for_columns_list]`。 |
| for_all | 指定收集所有列的统计信息。   - `FOR ALL COLUMNS`：收集所有列的统计信息。 - `FOR ALL INDEXED COLUMNS`：收集所有索引列的统计信息。 - `FOR ALL HIDDEN COLUMNS`：收集所有隐藏列的统计信息。 - `opt_size_clause`：可选的直方图大小子句。 |
| for_columns | 指定收集指定列的统计信息。格式为 `FOR COLUMNS [for_columns_list]`，其中 `for_columns_list` 可以是列名、大小子句或两者的组合，多个项目用逗号分隔。 |
| for_columns_item | 指定列统计信息项，可以是列名、大小子句或两者的组合。 |
| column_clause | 指定列名，可以是单个列名或括号括起来的列名列表。 |
| opt_size_clause | 可选的直方图大小子句。 |
| size_clause | 指定直方图中的最大存储桶数或大小选项。   - `SIZE AUTO`：自动确定存储桶数。 - `SIZE REPEAT`：使用上次收集统计信息时使用的存储桶数。 - `SIZE SKEWONLY`：仅对数据分布倾斜的列创建直方图。 - `SIZE number_literal`：指定存储桶数，取值范围是 [1,2048]，默认值是 `256`。 |
| opt_analyze_sample_clause | 可选的采样子句，用于指定估计统计信息时的采样数据量。如果省略该参数，则会根据数据库优化器自动选择一个合适的比例进行采样。 |
| SAMPLE | 指定用于估计统计信息使用的分析对象中的采样数据量。格式为 `SAMPLE INTNUM sample_option`，其中 `INTNUM` 必须大于等于 1。 |
| sample_option | 指定采样方式。   - `ROWS`：对表中的 `INTNUM` 行进行采样。 - `PERCENTAGE`：对表中行的 `INTNUM` 百分比进行采样。 |

## 示例

- 收集 `test` 表的统计信息，列的桶个数为 30 个。

```sql
obclient> CREATE TABLE test (c1 INT, c2 INT, c3 INT);
obclient> ANALYZE TABLE test UPDATE HISTOGRAM ON c1, c2 WITH 30 BUCKETS;

```

- 删除指定列的直方图。

```sql
obclient> ANALYZE TABLE test DROP HISTOGRAM ON c1, c2;

```

- 当租户级配置项 `enable_sql_extension` 为 `TRUE` 的时候，使用 Oracle 模式下的语法收集表 `test` 的统计信息，所有列的桶个数设定为 128。

```sql
obclient> ALTER SYSTEM SET enable_sql_extension = TRUE;

obclient> ANALYZE TABLE test COMPUTE STATISTICS FOR ALL COLUMNS SIZE 128;

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
