---
title: "创建索引 | OceanBase 文档中心"
description: 创建索引 您可以通过 CREATE INDEX 语句为表创建索引。 OceanBase 数据库支持在非分区表和分区表上创建索引，索引可以是局部索引或全局索引，也可以是唯一索引或普通索引。如果是分区表的唯一索引，则局部的唯一索引必须包含表分区的分区键。 本节主要介绍如何在非分区表上创建索引，分区表上索引的创建请参见 创…
---
切换语言

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

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

# 创建索引

更新时间：2026-06-09 13:11:34

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/500.administrator-guide/700.database-object-management/400.manage-indexes/200.create-an-index-of-administrator-guide.md)  

您可以通过 `CREATE INDEX` 语句为表创建索引。

OceanBase 数据库支持在非分区表和分区表上创建索引，索引可以是局部索引或全局索引，也可以是唯一索引或普通索引。如果是分区表的唯一索引，则局部的唯一索引必须包含表分区的分区键。

本节主要介绍如何在非分区表上创建索引，分区表上索引的创建请参见 [创建索引](https://www.oceanbase.com/docs/community-observer-cn-10000000000901475) 章节。

创建索引的 SQL 语法格式如下：

```sql
CREATE [UNIQUE] INDEX index_name ON table_name ( column_list ) [LOCAL | GLOBAL] [ PARTITION BY column_list PARTITIONS N ] ;

```

字段解释如下：

- `UNIQUE` ：代表唯一索引。
 - `table_name` ：表名，指需要创建索引的表。
 - `column_list` ：指出对哪些列进行索引，多列时各列之间用逗号分隔。
 - `LOCAL` ：局部索引。MySQL 模式中在创建索引时如果不显式指定 `GLOBAL` 或 `LOCAL` ，则默认是 `LOCAL` 。
 - `GLOBAL` ：全局索引。
 - `PARTITION BY column_list PARTITIONS N` ：指定分区方式及类型。

> **说明**
>
>  
>
> 索引名称在表范围内不能重复，查看索引可以通过命令 `SHOW INDEX`。

新增索引还有一种方法，其 SQL 语法格式如下：

```sql
ALTER TABLE  table_name  
ADD INDEX|KEY  index_name ( column_list ) ;

```

该语句可以一次增加多个索引，索引关键字用 INDEX 或 KEY 都可以。

> **说明**
>
>  
>
> 暂不支持倒叙索引。比如：`CREATE INDEX idx ON test (c1, c2 DESC);`，会报错 `Not supported feature or function`

示例：为非分区表创建普通索引。

```sql
obclient> CREATE TABLE test (c1 int primary key, c2 VARCHAR(10));
Query OK, 0 rows affected

obclient> CREATE INDEX idx ON test (c1, c2);
Query OK, 0 rows affected

obclient> SHOW INDEX FROM test;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment   | Index_comment | Visible |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
| test  |          0 | PRIMARY  |            1 | c1          | A         |        NULL | NULL     | NULL   |      | BTREE      | available |               | YES     |
| test  |          1 | idx      |            1 | c1          | A         |        NULL | NULL     | NULL   |      | BTREE      | available |               | YES     |
| test  |          1 | idx      |            2 | c2          | A         |        NULL | NULL     | NULL   | YES  | BTREE      | available |               | YES     |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-----------+---------------+---------+
3 rows in set

```

字段解释如下：

- `Seq_in_index` ：索引中的列序列号，一个是1一个是2，就是表明在联合索引中的顺序。
 - `Column_name` ：索引的列名。
 - `Non_unique` ：如果索引不能包括重复值则为0，如果可以则为1。也就是平时所说的唯一索引。
 - `Collation` ：指的是列以什么方式存储在索引中。
 - `Cardinality` ：是基数的意思，表示索引中唯一值的数目的估计值。
 - `Sub_part` ：前置索引的意思，如果列只是被部分地编入索引，则为被编入索引的字符的数目。如果整列被编入索引，则为NULL。
 - `Packed` ：指示关键字如何被压缩。如果没有被压缩，则为NULL。
 - `Index_type` ：表示索引类型。

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