---
title: "cardinality_estimation_model - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: cardinality_estimation_model 说明 在 V4.3.x 版本中，该变量从 V4.3.3 版本开始引入。 在 V4.2.x 版本中，该变量从 V4.2.4 版本开始引入。 功能描述 cardinality_estimation_model 用于设置控制优化器在基数估计时使用的相关性假设。 注意…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# cardinality_estimation_model

更新时间：2026-04-27 12:15:57

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/800.configuration-items-and-system-variables/200.system-variable/300.global-system-variable/850.cardinality_estimation_model-global.md)

#### 说明

- 在 V4.3.x 版本中，该变量从 V4.3.3 版本开始引入。
 - 在 V4.2.x 版本中，该变量从 V4.2.4 版本开始引入。

## 功能描述

`cardinality_estimation_model` 用于设置控制优化器在基数估计时使用的相关性假设。

#### 注意

请确保在将此选项引入生产环境之前，先对其进行全面测试。

## 权限要求

- 查询变量

     - Global 级别

      `sys` 租户和所有用户租户均可以使用 `SHOW VARIABLES` 语句或视图 `SYS.TENANT_VIRTUAL_GLOBAL_VARIABLE`（Oracle 模式）及视图 `information_schema.GLOBAL_VARIABLES`（MySQL 模式）查看 Global 系统变量的值。
     - Session 级别

      `sys` 租户和所有用户租户均可以使用 `SHOW VARIABLES` 语句或视图 `SYS.TENANT_VIRTUAL_SESSION_VARIABLE`（Oracle 模式）及视图 `information_schema.SESSION_VARIABLES`（MySQL 模式）查看 Session 系统变量的值。
 - 修改变量

     - Global 生效

           - `sys` 租户可以直接修改 Global 系统变量的值。
           - MySQL 用户租户需要拥有 `SUPER` 或 `ALTER SYSTEM` 权限才能修改 Global 系统变量的值。
           - 对于 V4.x 版本，从 V4.2.0 版本开始，Oracle 用户租户需要拥有 `ALTER SYSTEM` 权限才能修改 Global 系统变量的值。
     - Session 生效

      `sys` 租户和所有用户租户均可以直接修改本租户的 Session 系统变量的值。

## 属性说明

| **属性** | **描述** |
| --- | --- |
| 参数类型 | Enum |
| 默认值 | PARTIAL |
| 取值范围 | - INDEPENDENT：假设谓词间是完全独立的。 - PARTIAL: 假设谓词间有一定程度的相关性。 - FULL：假设谓词间是完全相关的。    #### 说明    在大多数场景下，三种相关性的估行结果会依次变大：INDEPENDENT < PARTIAL < FULL。 |
| 生效范围 | - Global - Session |
| 是否可修改 | 是，支持通过 `SET` 语句修改。 |

## 配置示例

在三种相关性假设下，对 `t1` 经过基表谓词过滤后的结果，估行结果分别为 `10`, `31`, `98`。

1. 创建表 `t1`。

   ```shell
   obclient [test]> create table t1(c1 int, c2 int);
   Query OK, 0 rows affected (0.103 sec)

   ```
 2. 插入数据到表 `t1`。

   ```shell
   obclient [test]> insert into t1 select row_number() over () % 10, row_number() over () % 100 from table(generator(10000));
   Query OK, 10000 rows affected (0.077 sec)
   Records: 10000  Duplicates: 0  Warnings: 0

   ```
 3. 分析表 `t1`。

   ```shell
   obclient [test]> analyze table t1;
   Query OK, 0 rows affected (0.073 sec)

   ```
 4. 设置相关性假设为 `INDEPENDENT`，执行基数估计。

   ```shell
   obclient [test]> set cardinality_estimation_model = 'independent';
   Query OK, 0 rows affected (0.001 sec)

   ```
 5. 查询基数估计结果。

   ```shell
   obclient [test]> explain select * from t1 where c1 = 1 and c2 = 1;

   ```

   查询结果如下：

   ```shell
   +------------------------------------------------------------------------------------------+
   | Query Plan                                                                               |
   +------------------------------------------------------------------------------------------+
   | ===============================================                                          |
   | |ID|OPERATOR       |NAME|EST.ROWS|EST.TIME(us)|                                          |
   | -----------------------------------------------                                          |
   | |0 |TABLE FULL SCAN|t1  |10      |734         |                                          |
   | ===============================================                                          |
   | Outputs & filters:                                                                       |
   | -------------------------------------                                                    |
   |   0 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1], [t1.c1 = 1]), rowset=16              |
   |       access([t1.c1], [t1.c2]), partitions(p0)                                           |
   |       is_index_back=false, is_global_index=false, filter_before_indexback[false,false],  |
   |       range_key([t1.__pk_increment]), range(MIN ; MAX)always true                        |
   +------------------------------------------------------------------------------------------+
   11 rows in set (0.011 sec)

   ```
 6. 设置相关性假设为 `PARTIAL`，执行基数估计。

   ```shell
   obclient [test]> set cardinality_estimation_model = 'partial';
   Query OK, 0 rows affected (0.001 sec)

   ```
 7. 查询基数估计结果。

   ```

   查询结果如下：

   ```shell
   +------------------------------------------------------------------------------------------+
   | Query Plan                                                                               |
   +------------------------------------------------------------------------------------------+
   | ===============================================                                          |
   | |ID|OPERATOR       |NAME|EST.ROWS|EST.TIME(us)|                                          |
   | -----------------------------------------------                                          |
   | |0 |TABLE FULL SCAN|t1  |31      |735         |                                          |
   | ===============================================                                          |
   | Outputs & filters:                                                                       |
   | -------------------------------------                                                    |
   |   0 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1], [t1.c1 = 1]), rowset=256             |
   |       access([t1.c1], [t1.c2]), partitions(p0)                                           |
   |       is_index_back=false, is_global_index=false, filter_before_indexback[false,false],  |
   |       range_key([t1.__pk_increment]), range(MIN ; MAX)always true                        |
   +------------------------------------------------------------------------------------------+
   11 rows in set (0.004 sec)

   ```
 8. 设置相关性假设为 `FULL`，执行基数估计。

   ```shell
   obclient [test]> set cardinality_estimation_model = 'full';
   Query OK, 0 rows affected (0.000 sec)

   ```
 9. 查询基数估计结果。

   ```

   查询结果如下：

   ```shell
   +------------------------------------------------------------------------------------------+
   | Query Plan                                                                               |
   +------------------------------------------------------------------------------------------+
   | ===============================================                                          |
   | |ID|OPERATOR       |NAME|EST.ROWS|EST.TIME(us)|                                          |
   | -----------------------------------------------                                          |
   | |0 |TABLE FULL SCAN|t1  |98      |738         |                                          |
   | ===============================================                                          |
   | Outputs & filters:                                                                       |
   | -------------------------------------                                                    |
   |   0 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1], [t1.c1 = 1]), rowset=256             |
   |       access([t1.c1], [t1.c2]), partitions(p0)                                           |
   |       is_index_back=false, is_global_index=false, filter_before_indexback[false,false],  |
   |       range_key([t1.__pk_increment]), range(MIN ; MAX)always true                        |
   +------------------------------------------------------------------------------------------+
   11 rows in set (0.003 sec)

   ```

## 相关文档

[统计信息和估行机制的使用](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576722)

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