全部產品
Search
文件中心

Tablestore:建立二級索引

更新時間:Jun 30, 2024

二級索引相當於把資料表的主鍵查詢能力擴充到了不同的列,當需要使用屬性查詢資料時,您可以通過建立二級索引加快資料查詢的效率。設定預定義列後,在建立二級索引時將預定義列作為索引表的索引列或者屬性列。建立二級索引後,您可以使用二級索引進行資料查詢。

說明
  • 二級索引包括全域二級索引和本地二級索引。關於二級索引的更多資訊,請參見二級索引

  • 您也可以使用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);

 }

相關文檔

  • 建立二級索引後,您可以單行讀取或者範圍讀取資料。具體操作,請參見使用二級索引讀取資料

  • 如果不再需要使用二級索引,您可以刪除二級索引。具體操作,請參見刪除二級索引