---
title: 使用 use_concat hint 优化 or 语句的性能-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 使用 use_concat hint 优化 or 语句的性能相关的常见问题和使用技巧，帮助您快速解决 使用 use_concat hint 优化 or 语句的性能的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 使用 use_concat hint 优化 or 语句的性能

更新时间：2026-05-15 09:06

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

当查询语句的 WHERE 子句中包含组合的 OR 条件时，无法直接使用单一索引进行查询，OceanBase 数据库会基于代价考虑是否将 OR 条件改写为 UNION 语句。由于缺失统计信息等原因，OceanBase 数据库优化器可能无法准确估算改写前后的代价，这个时候就需要使用 `USE_CONCAT` Hint 来强制将 OR 改写为 UNION。

## 详细信息

OceanBase 数据库中 `USE_CONCAT` Hint 指示优化器使用 `UNION ALL` 运算符将查询 WHERE 子句中的组合 OR 条件转换为复合查询。如果没有设置 `USE_CONCAT` Hint，则仅当使用串联查询的成本低于不使用的成本时，才会发生此转换。本文介绍使用 use_concat hint 优化 or 语句的性能。

`USE_CONCAT` Hint 的语法如下。

```shell
/*+ USE_CONCAT [ ( @queryblock ) ] */

```

## USE_CONCAT Hint 的使用示例

- 原始 SQL。

  ```shell
  select * from TEST_TB where ( acctid <> 0 and acctid =  to_number(?) ) or ( SUBSID <> 0 AND SUBSID = to_number(?) );

  ```

  执行计划如下：

  ```shell
  |=================================================
  |ID|OPERATOR  |NAME         |EST. ROWS |COST     |
   --------------------------------------------------
  |0 |TABLE SCAN|TEST_TB      |13        |23460004 |
  ==================================================

  ```

  执行耗时Empty set (7.301 sec) 。
 - 使用 USE_CONCAT Hint 指示优化器。

  ```shell
  select/*+ USE_CONCAT */ * from TEST_TB where ( acctid <> 0 and acctid = to_number(?) ) or ( SUBSID <> 0 AND SUBSID = to_number(?) );

  ```

  执行计划如下：

  ```shell
  |==================================================
  |ID|OPERATOR   |NAME         |EST. ROWS |COST     |
  ---------------------------------------------------
  |0 |UNION ALL  |             |2         |92       |
  |1 | TABLE SCAN|TEST_TB(IX1) |1         |46       |
  |2 | TABLE SCAN|TEST_TB(IX2) |1         |46       |
  ===================================================

  ```

  执行耗时 Empty set (0.094 sec) 。

## 适用版本

OceanBase 数据库所有版本。

Previous

[OceanBase 数据库性能视图 gv$sql_audit 介绍](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000102)

Next

[OceanBase 数据库的 SQL 审计信息淘汰机制](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000010176) ![有帮助](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) 咨询热线
