日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建二級索引

二級索引相當于把數據表的主鍵查詢能力擴展到了不同的列,當需要使用屬性查詢數據時,您可以通過創建二級索引加快數據查詢的效率。設置預定義列后,在創建二級索引時將預定義列作為索引表的索引列或者屬性列。您可以使用CreateIndex接口在已存在的數據表上創建一個索引表。

說明
  • 二級索引包括全局二級索引和本地二級索引。關于二級索引的更多信息,請參見二級索引。

  • 您也可以使用CreateTable接口在創建數據表的同時創建一個或者多個索引表。具體操作,請參見創建數據表。

前提條件

  • 已初始化Client。具體操作,請參見初始化OTSClient。

  • 已創建數據表,且數據表的最大版本數(maxVersions)必須為1,數據生命周期(timeToLive)必須滿足如下條件中的任意一個。

    • 數據表的數據生命周期為-1(數據永不過期)。

    • 數據表的數據生命周期不為-1時,數據表為禁止更新狀態。

  • 數據表已設置預定義列。

注意事項

  • 索引表名稱不能與已存在的時序表名稱和數據表名稱相同。

  • 創建二級索引時,系統會自動將未出現在索引列中的數據表主鍵補齊到索引表主鍵中。

  • 創建本地二級索引時,索引表的第一列主鍵必須與數據表的第一列主鍵相同。

參數

參數

說明

mainTableName

數據表名稱。

indexMeta

索引表的結構信息,包括如下內容:

  • indexName:索引表名稱。

  • primaryKey:索引表的索引列,索引列為數據表主鍵和預定義列的組合。

    使用本地二級索引時,索引表的第一個主鍵列必須與數據表的第一個主鍵列相同。

  • definedColumns:索引表的屬性列,索引表屬性列為數據表的預定義列的組合。

  • indexType:索引類型??蛇x值包括IT_GLOBAL_INDEX和IT_LOCAL_INDEX。

    • 當不設置indexType或者設置indexType為IT_GLOBAL_INDEX時,表示使用全局二級索引。

      使用全局索引時,表格存儲以異步方式將數據表中被索引的列和主鍵列的數據自動同步到索引表中,正常情況下同步延遲達到毫秒級別。

    • 當設置indexType為IT_LOCAL_INDEX時,表示使用本地二級索引。

      使用本地二級索引時,表格存儲以同步方式將數據表中被索引的列和主鍵列的數據自動同步到索引表中,當數據寫入數據表后,即可從索引表中查詢到數據。

  • indexUpdateMode:索引更新模式??蛇x值包括IUM_ASYNC_INDEX和IUM_SYNC_INDEX。

    • 當不設置indexUpdateMode或者設置indexUpdateMode為IUM_ASYNC_INDEX時,表示異步更新。

      使用全局二級索引時,索引更新模式必須設置為異步更新(IUM_ASYNC_INDEX)。

    • 當設置indexUpdateMode為IUM_SYNC_INDEX時,表示同步更新。

      使用本地二級索引時,索引更新模式必須設置為同步更新(IUM_SYNC_INDEX)。

includeBaseData

索引表中是否包含數據表中已存在的數據。

當CreateIndexRequest中的最后一個參數includeBaseData設置為true時,表示包含存量數據;設置為false時,表示不包含存量數據。

示例

創建全局二級索引

以下示例用于為數據表創建一個全局二級索引。

private static void createIndex(SyncClient client) {
    //設置索引表名稱。
    IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>"); 
    //為索引表添加主鍵列,設置DEFINED_COL_NAME_1列為索引表的第一列主鍵。
    indexMeta.addPrimaryKeyColumn(DEFINED_COL_NAME_1); 
    //為索引表添加主鍵列,設置PRIMARY_KEY_NAME_2列為索引表的第二列主鍵。
    indexMeta.addPrimaryKeyColumn(PRIMARY_KEY_NAME_2); 
    //為索引表添加屬性列,設置DEFINED_COL_NAME_2列為索引表的屬性列。
    indexMeta.addDefinedColumn(DEFINED_COL_NAME_2); 
    //添加索引表到數據表,包含存量數據。
    //CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, true); 
    //添加索引表到數據表,不包含存量數據。
    CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, false); 
    /**通過將IncludeBaseData參數設置為true,創建索引表后會開啟數據表中存量數據的同步,然后可以通過索引表查詢全部數據,
       同步時間和數據量的大小有一定的關系。
    */
    //request.setIncludeBaseData(true);
    //創建索引表。
    client.createIndex(request); 
}

創建本地二級索引

以下示例用于創建一個本地二級索引。

private static void createIndex(SyncClient client) {
    //設置索引表名稱。
    IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>"); 
    //為索引表添加主鍵列,設置PRIMARY_KEY_NAME_1列為索引表的第一列主鍵。
    //本地二級索引的第一列主鍵必須與數據表的第一列主鍵相同。
    indexMeta.addPrimaryKeyColumn(PRIMARY_KEY_NAME_1); 
    //為索引表添加主鍵列,設置DEFINED_COL_NAME_1列為索引表的第二列主鍵。
    indexMeta.addPrimaryKeyColumn(DEFINED_COL_NAME_1); 
    //為索引表添加屬性列,設置DEFINED_COL_NAME_2列為索引表的屬性列。
    indexMeta.addDefinedColumn(DEFINED_COL_NAME_2); 
    //設置索引類型為IT_LOCAL_INDEX(本地二級索引)。
    indexMeta.setIndexType(IT_LOCAL_INDEX);
    //設置同步模式為IUM_SYNC_INDEX(同步更新)。
    indexMeta.setIndexUpdateMode(IUM_SYNC_INDEX);
    //添加索引表到數據表,包含存量數據。
    //CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, true); 
    //添加索引表到數據表,不包含存量數據。
    CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, false); 
    /**通過將IncludeBaseData參數設置為true,創建索引表后會開啟數據表中存量數據的同步,然后可以通過索引表查詢全部數據,
       同步時間和數據量的大小有一定的關系。
    */
    //request.setIncludeBaseData(true);
    //創建索引表。
    client.createIndex(request); 
}

相關文檔

  • 創建二級索引后,您可以單行讀取或者范圍讀取數據。具體操作,請參見使用二級索引讀取數據

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