全部產品
Search
文件中心

Tablestore:建立二級索引

更新時間:Apr 30, 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);

 }

相關文檔

  • 建立二級索引後,可通過單行讀取或範圍讀取方式查詢資料。具體操作,請參見使用二級索引讀取資料

  • 不再需要某個二級索引時,可將其刪除。具體操作,請參見刪除二級索引