文档

创建二级索引

更新时间:

二级索引相当于把数据表的主键查询能力扩展到了不同的列,当需要使用属性查询数据时,您可以通过创建二级索引加快数据查询的效率。设置预定义列后,在创建二级索引时将预定义列作为索引表的索引列或者属性列。创建二级索引后,您可以使用二级索引进行数据查询。

说明
  • 二级索引包括全局二级索引和本地二级索引。关于二级索引的更多信息,请参见二级索引

  • 您也可以使用CreateTable接口在创建数据表的同时创建一个或者多个索引表,详情请参见创建数据表

前提条件

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

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

    • 数据表的数据生命周期为-1(数据永不过期)。

    • 数据表的数据生命周期不为-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);

 }

相关文档

  • 创建二级索引后,您可以单行读取或者范围读取数据。具体操作,请参见使用二级索引读取数据

  • 如果不再需要使用二级索引,您可以删除二级索引。具体操作,请参见删除二级索引