---
title: "分区表的索引 | OceanBase 文档中心"
description: 分区表的索引 分区表的查询性能跟 SQL 中条件有关。当 SQL 中带上拆分键时，OceanBase 会根据条件做分区裁剪，只用搜索特定的分区即可；如果没有拆分键，则要扫描所有分区。 背景信息 分区表也可以通过创建索引来提升性能。跟分区表一样，分区表的索引也可以分区或者不分区。 如果分区表的索引不分区，就是一个全局索…
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 3.2.3 企业版 LTS

# 分区表的索引

更新时间：2024-02-19 10:26:26

分区表的查询性能跟 SQL 中条件有关。当 SQL 中带上拆分键时，OceanBase 会根据条件做分区裁剪，只用搜索特定的分区即可；如果没有拆分键，则要扫描所有分区。

## 背景信息

分区表也可以通过创建索引来提升性能。跟分区表一样，分区表的索引也可以分区或者不分区。

- 如果分区表的索引不分区，就是一个全局索引（GLOBAL），是一个独立的分区，索引数据覆盖整个分区表。
 - 如果分区表的索引分区了，根据分区策略又可以分为两类。一是跟分区表保持一致的分区策略，则每个索引分区的索引数据覆盖相应的分区表的分区，这个索引又叫本地索引（LOCAL）。 二是作为 GLOBAL 索引可以有自己独立的分区方式。

建议尽可能的使用本地索引，只有在有必要的时候才使用全局索引。其原因是全局索引会降低 DML 的性能，DML 可能会因此产生分布式事务。

## 语法

```unknow
CREATE [UNIQUE] INDEX index_name
     ON table_name (index_col_name,...)
      [index_type] [index_options]
      [partition_option]

index_type:
      USING BTREE

index_options:
      index_option [index_option...]

index_option:
    GLOBAL | LOCAL
    | COMMENT 'string'
    | COMPRESSION [=] {NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}
    | BLOCK_SIZE [=] size
    | STORING(column_name_list)
    | VISIBLE | INVISIBLE

index_col_name:
    column_name [(length)] [ASC | DESC]

column_name_list:
    column_name [, column_name...]

```

## 参数解释

---

| **参数** | **描述** |
| --- | --- |
| index_name | 指定要创建的索引名称。 |
| table_name | 指过索引所属的表名。 |
| index_col_name | 指定索引的列名，每个列名后都支持 ASC（升序），不支持 DESC（降序）。默认为升序。 建立索引的排序方式为：首先以 `index_col_name` 中第一个列的值排序；该列值相同的记录，按下一列名的值排序；以此类推。 |
| column_name | 用于创建索引的列名。 |
| length | 对于字符串列，可以使用 `col_name(length)` 语法截取字符串的部分用于创建索引。 支持的数据类型有 `CHAR`、`VARCHAR`、`BINARY` 与 `VARBINARY`。 |
| index_type | 索引类型，只支持 `USING BTREE`，表示使用 B-Tree 索引。 |
| UNIQUE | 指定为唯一索引。 |
| index_option | 指定索引选项，多个 `index_option` 以空格分隔。 |
| GLOBAL \| LOCAL | 指定该索引是全局索引或局部索引，默认是 `LOCAL`。 |
| COMMENT | 指定注释。 |
| COMPRESSION | 指定压缩算法。 |
| BLOCK_SIZE | 指定微块大小。 |
| STORING | 表示索引表中冗余存储某些列，以提高系统查询性能。 |

## 示例

创建分区表的本地索引。

1. 创建 `td3` 表。

   ```sql
   obclient> CREATE TABLE td3 (log_date NUMBER primary key,c_date date);
   Query OK, 0 rows affected

   ```
 2. 创建分区表的本地索引 `idx_log_date`。

   ```sql
   obclient> CREATE INDEX idx_log_date ON td3(c_date) LOCAL;
   Query OK, 0 rows affected

   ```
 3. 查询在表 `td3` 上已创建的索引。

   ```sql
   obclient> SELECT * FROM USER_IND_COLUMNS WHERE table_name='TD3';
   +---------------------------+------------+-------------+-----------------+---------------+-------------+---------+--------------------+
   | INDEX_NAME                | TABLE_NAME | COLUMN_NAME | COLUMN_POSITION | COLUMN_LENGTH | CHAR_LENGTH | DESCEND | COLLATED_COLUMN_ID |
   +---------------------------+------------+-------------+-----------------+---------------+-------------+---------+--------------------+
   | TD3_OBPK_1650957525354689 | TD3        | LOG_DATE    |               1 |            22 |           0 | ASC     |               NULL |
   | IDX_LOG_DATE              | TD3        | C_DATE      |               1 |             7 |           0 | ASC     |               NULL |
   +---------------------------+------------+-------------+-----------------+---------------+-------------+---------+--------------------+
   2 rows in set

   ```

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