---
title: 执行计划绑定后，通过 EXPLAIN 语句发现执行计划没有按期望执行 -OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于执行计划绑定后，通过 EXPLAIN 语句发现执行计划没有按期望执行 相关的常见问题和使用技巧，帮助您快速解决执行计划绑定后，通过 EXPLAIN 语句发现执行计划没有按期望执行 的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 执行计划绑定后，通过 EXPLAIN 语句发现执行计划没有按期望执行

更新时间：2023-11-14 03:16

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

本文介绍执行计划绑定后通过 EXPLAIN 语句发现执行计划没有按期望执行时应该如何进行问题排查和解决问题。

## 适用版本

OceanBase 数据库所有版本

## 问题现象

通过 OUTLINE 为 SQL 语句绑定执行计划，预期查询是通过索引执行的，但通过 `EXPLAIN` 语句发现执行该语句并没有通过索引，而是使用的表扫描（`TABLE SCAN`）。

```unknow
obclient> CREATE OUTLINE ON SELECT /*+ index($ind)*/ * FROM $table;
obclient> EXPLAIN SELECT * FROM $table;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Query Plan

                                                                                             |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ============================-=========
|ID|OPERATOR  |NAME  |EST. ROWS|COST |
--------------------------------------
|0 |TABLE SCAN|$table|100000   |38681|
===========================-==========

Outputs & filters:
-------------------------------------
  0 - output([$table.id]), filter(nil),
      access([$table.id]), partitions(p0)
 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.28 sec)

```

## 可能原因

这其实并不是一个问题，出现这种情况的原因是由于绑定的执行计划并不会在 `EXPLAIN` 中展示。

## 解决方式

查询 `V$PLAN_CACHE_PLAN_STAT` 视图的 `outline_id` 列，发现该列的值不为 `-1`，说明执行计划已绑定。

```unknow
obclient> select outline_id from oceanbase.GV$PLAN_CACHE_PLAN_STAT LIMIT 1;
+------------+
| outline_id |
+------------+
|  xxxxxxxxx |
+------------+
1 row in set (0.02 sec)

```

Previous

[执行计划结果中 Optimization info 详解](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000466048)

Next

[多表连接生成计划报错 unexpected operator type](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000043624) ![有帮助](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) 咨询热线
