全部产品
Search
文档中心

表格存储:创建二级索引

更新时间:Apr 29, 2026

二级索引相当于把数据表的主键查询能力扩展到了不同的列,当需要使用属性查询数据时,您可以通过创建二级索引加快数据查询的效率。设置预定义列后,在创建二级索引时将预定义列作为索引表的索引列或者属性列。创建二级索引后,您可以使用二级索引进行数据查询。
说明
  • 二级索引分为全局二级索引和本地二级索引两种类型。详情请参见二级索引

  • 也可以在创建数据表时同步创建一个或多个索引表,方法是调用 CreateTable 接口。详情请参见创建数据表

前提条件

  • 已初始化 OTSClient。具体操作,请参见初始化Tablestore Client

  • 已创建数据表,且数据表的最大版本数(maxVersions)必须为 1,数据生命周期(timeToLive)须满足以下任一条件:

    • timeToLive-1,即数据永不过期。

    • timeToLive 不为 -1,且数据表处于禁止更新状态。

  • 数据表已设置预定义列。

注意事项

  • .NET SDK目前仅支持全局二级索引。如需创建本地二级索引,请使用其他语言 SDK、管理控制台或命令行工具。

  • 索引表名称不能与已有的时序表或数据表名称相同。

  • 创建二级索引时,系统自动将数据表主键中未出现在索引列的主键列补齐到索引表主键中。

参数

参数

说明

mainTableName

数据表名称。

indexMeta

索引表的结构信息,包含以下字段:

  • indexName:索引表名称。

  • primaryKey:索引表的索引列,由数据表主键列和预定义列任意组合而成。

  • definedColumns:索引表的属性列,为数据表预定义列的子集。

  • indexUpdateMode:索引表更新模式,当前仅支持 IUM_ASYNC_INDEX。

  • indexType:索引表类型,当前仅支持 IT_GLOBAL_INDEX。

示例

以下示例在主键为 pk1 和 pk2 的数据表上创建全局二级索引。索引列为 col1,属性列为 col2,不包含存量数据。创建完成后,索引表的完整主键为 col1、pk1、pk2,属性列为 col2。

public static void CreateGlobalIndex(OTSClient otsClient, String TableName, String IndexName)
{
    Console.WriteLine("Start create globalIndex...");
    IndexMeta indexMeta = new IndexMeta(IndexName);
    // 为索引表添加主键列。
    indexMeta.PrimaryKey = new List<string>() { "col1" };
    // 为索引表添加属性列。
    indexMeta.DefinedColumns = new List<string>() { "col2" };
    //indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
    //indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;

    CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
    CreateGlobalIndexRequest request = new CreateGlobalIndexRequest(TableName, indexMeta);
    otsClient.CreateGlobalIndex(request);

    Console.WriteLine("Global Index is created,tableName: " + TableName + ",IndexName:" + IndexName);

 }

相关文档

  • 创建二级索引后,可通过单行读取或范围读取方式查询数据。具体操作,请参见使用二级索引读取数据

  • 不再需要某个二级索引时,可将其删除。具体操作,请参见删除二级索引