二級索引相當於把資料表的主鍵查詢能力擴充到了不同的列,當需要使用屬性查詢資料時,您可以通過建立二級索引加快資料查詢的效率。設定預定義列後,在建立二級索引時將預定義列作為索引表的索引列或者屬性列。建立二級索引後,您可以使用二級索引進行資料查詢。
前提條件
已初始化Client。具體操作,請參見初始化。
已建立資料表,且資料表的最大版本數(max_versions)必須為1,資料生命週期(time_to_live)必須滿足如下條件中的任意一個。
資料表的資料生命週期為-1(資料永不到期)。
資料表的資料生命週期不為-1時,資料表為禁止更新狀態。
資料表已設定預定義列。
注意事項
索引表名稱不能與已存在的時序表名稱和資料表名稱相同。
建立二級索引時,系統會自動將未出現在索引列中的資料表主鍵補齊到索引表主鍵中。
建立本地二級索引時,索引表的第一列主鍵必須與資料表的第一列主鍵相同。
介面
/**
* 建立二級索引。
* @api
*
* @param [] $request
* 請求參數,資料表名稱。
* @return [] 請求返回
* @throws OTSClientException 當參數檢查出錯或服務端返回校正出錯時拋出異常。
* @throws OTSServerException 當OTS服務端返回錯誤時拋出異常。
* @example "src/examples/CreateIndex.php"
*/
public function createIndex(array $request)
參數
參數 | 說明 |
table_name | 資料表名稱。 |
index_meta | 索引表的結構資訊,包括如下內容:
|
include_base_data | 索引表中是否包含資料表中已存在的資料,預設值為false。
|
樣本
建立全域二級索引
建立二級索引時,如果不指定index_type和index_update_mode,則預設建立的為全域二級索引。
$request = array(
'table_name' => '<TABLE_NAME>', //設定資料表名稱。
//'include_base_data' => true, //設定此參數為true,表示建立二級索引時包含存量資料。
'index_meta' => array(
'name' => '<INDEX_NAME>', //設定索引表名稱。
'primary_key' => array('Col1'), //設定索引表主鍵列。
'defined_column' => array('Col2') //設定索引表屬性列。
)
);
$otsClient->createIndex($request);
您也可以通過指定index_type和index_update_mode來建立全域二級索引。
$request = array(
'table_name' => '<TABLE_NAME>', //設定資料表名稱。
//'include_base_data' => true, //設定此參數為true,表示建立二級索引時包含存量資料。
'index_meta' => array(
'name' => '<INDEX_NAME>', //設定索引表名稱。
'primary_key' => array('Col1'), //設定索引表主鍵列。
'defined_column' => array('Col2'), //設定索引表屬性列。
'index_type' => IndexTypeConst::GLOBAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
)
);
$otsClient->createIndex($request);
建立本地二級索引
以下樣本用於建立一個本地二級索引。
$createLocalRequest = array (
'table_name' => '<TABLE_NAME>', //設定資料表名稱。
//'include_base_data' => true, //設定此參數為true,表示建立二級索引時包含存量資料。
'index_meta' => array (
'name' => '<INDEX_NAME>', //設定索引表名稱。
'primary_key' => array('PK0', 'Col1'), //設定索引表主鍵。索引表的第一列主鍵必須與資料表的第一列主鍵相同。
'defined_column' => array('Col2'), //設定索引表屬性列。
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
);
$otsClient->createIndex($createLocalRequest);
相關文檔
建立二級索引後,您可以單行讀取或者範圍讀取資料。具體操作,請參見使用二級索引讀取資料。
如果不再需要使用二級索引,您可以刪除二級索引。具體操作,請參見刪除二級索引。