---
title: 如何查看 SQL 执行的物理执行计划-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 如何查看 SQL 执行的物理执行计划相关的常见问题和使用技巧，帮助您快速解决 如何查看 SQL 执行的物理执行计划的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 如何查看 SQL 执行的物理执行计划

更新时间：2026-05-14 09:21

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

## 适用版本

OceanBase 数据库 V4.0 之前的版本

## 操作步骤

使用 EXPLAIN 命令可以查看 SQL 的执行计划。但是在 SQL 实际执行时，因为传入参数以及执行环境的变化，SQL 语可能会选择会与 EXPLAIN 时不同的执行计划。SQL 执行时使用的物理执行计划可以通过以下系统视图获得。

- gv$sql_audit
 - gv$plan_cache_plan_explain

可以通过 sys 租户查看 OceanBase 数据库所有租户中的查询计划以及清理执行计划缓存。

1. 通过 `gv$sql_audit` 查询某次 SQL 执行对应的 `svr_ip`、`svr_port`、`tenant_id`、`plan_id`。

   ```
   SELECT svr_ip,svr_port,tenant_id,user_name, db_name, sql_id, plan_id, type, elapsed_time, execute_time, query_sql FROM gv$sql_audit WHERE tenant_id=1001 and user_name='xxxx' and query_sql like...

   ```
 2. 根据上述得到的`svr_ip`、`svr_port`、`tenant_id`、`plan_id`，查询 `gv$plan_cache_plan_explain` 视图，展示对应的执行计划。

   ```
   oceanbase 16:01:01> SELECT * FROM gv$plan_cache_plan_explain WHERE tenant_id=1 AND plan_id=582518 and ip='xx.xxx.xx.xxx' and port=2882;
   +-----------+---------------+------+---------+------------------+-----------------------+------+------+-------------------------------------------------------------------------------------------------------------------------------+
   | TENANT_ID | IP            | PORT | PLAN_ID | OPERATOR         | NAME                  | ROWS | COST | PROPERTY                                                                                                                      |
   +-----------+---------------+------+---------+------------------+-----------------------+------+------+-------------------------------------------------------------------------------------------------------------------------------+
   |         1 | xx.xxx.xx.xxx | 2882 |  582518 |  PHY_SORT        | NULL                  |  100 | 2418 | NULL                                                                                                                          |
   |         1 | xx.xxx.xx.xxx | 2882 |  582518 |   PHY_TABLE_SCAN | __all_virtual_sysstat |  100 | 2000 | table_rows:100000, physical_range_rows:100, logical_range_rows:100, index_back_rows:0, output_rows:100, est_method:basic_stat |
   +-----------+---------------+------+---------+------------------+-----------------------+------+------+-------------------------------------------------------------------------------------------------------------------------------+
   2 rows in set (0.03 sec)

   ```

#### 注意

`gv$plan_cache_plan_explain` 只支持主键查询，必须提供 `svr_ip`、`svr_port`、`tenant_id`、`plan_id` 四个字段进行匹配查询，否则结果显示为空。

## 更多信息

通过 root 用户登录到 sys 租户，执行 Plan cache 清空的命令如下。

```
alter system flush plan cache;								#清空本机
alter system flush plan cache global;					#清空整个集群
alter system flush plan cache tenant=ob_oracle global;		#清空指定租户
alter system flush plan cache sql_id='xxxx' global;				#清空指定sqlid
alter system flush plan cache databases='db1,db2' global;	#清空指定DB

```

Previous

[如何通过 SQL_ID 查询实时执行计划](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000195)

Next

[如何使用 outline 绑定执行计划](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000189) ![有帮助](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) 咨询热线
