全部產品
Search
文件中心

Tablestore:使用二級索引讀取資料

更新時間:Jun 30, 2024

Tablestore提供了單行讀取和範圍讀取的查詢方式用於讀取索引表中資料。當返回的屬性列在索引表中時,您可以直接讀取索引表擷取資料,否則請自行反查資料表擷取資料。

前提條件

注意事項

  • 索引表只能用於讀取資料。

  • 本地二級索引表的第一列主鍵必須與資料表的第一列主鍵相同。

  • 當需要返回的屬性列不在索引表中時,您需要自行反查資料表來擷取資料。

單行讀取資料

調用GetRow介面讀取一行資料。更多資訊,請參見讀取單行資料

參數

使用GetRow介面讀取索引表中資料時有如下注意事項:

  • table_name需要設定為索引表名稱。

  • 由於系統會自動將未出現在索引列中的資料表主鍵補齊到索引表主鍵中,所以設定行的主鍵時,需要同時設定索引表索引列和補齊的資料表主鍵。

樣本

以下樣本用於讀取索引表中指定主鍵的行資料。

$request = [
 'table_name' => '<INDEX_NAME>', //設定索引表名稱。
 'primary_key' => [ //設定索引表主鍵。如果讀取本地二級索引中的資料,索引表的第一列主鍵必須與資料表的第一列主鍵相同。
 ['PK0', 123],
 ['Col1', "abc"],
 ['PK1', 'abc']
 ],
 'max_versions' => 1, //設定讀取最新版本。
 'columns_to_get' => ['Col1'] //設定要讀取的列。
];
$response = $otsClient->getRow($request); 

範圍讀取資料

調用GetRange介面讀取一個範圍內的資料。更多資訊,請參見範圍讀取資料

參數

使用GetRange介面讀取索引表中資料時有如下注意事項:

  • table_name需要設定為索引表名稱。

  • 由於系統會自動將未出現在索引列中的資料表主鍵補齊到索引表主鍵中,所以設定起始主鍵和結束主鍵時,需要同時設定索引表索引列和補齊的資料表主鍵。

樣本

以下樣本用於讀取索引表中指定主鍵範圍內的資料。

//尋找PK0從1到4(左閉右開)的資料。
//範圍的邊界需要提供完整的主鍵,如果查詢的範圍不涉及到某一列值的範圍,則需要將該列設定為無窮大(INF_MAX)或者無窮小(INF_MIN)。
//如果讀取本地二級索引中的資料,索引表的第一列主鍵必須與資料表的第一列主鍵相同。
$startPK = [
 ['Col1', "abc"], 
 ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MIN] //'INF_MIN'表示最小值。
 ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MIN] //'INF_MIN'表示最小值。
];
//範圍的邊界需要提供完整的主鍵,如果查詢的範圍不涉及到某一列值的範圍,則需要將該列設定為無窮大(INF_MAX)或者無窮小(INF_MIN)。
$endPK = [
 ['Col1', "abc"],
 ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MAX] //'INF_MAX'表示最大值。
 ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MAX] //'INF_MAX'表示最大值。
];
$request = [
 'table_name' => '<INDEX_NAME>', //設定索引表名稱。
 'max_versions' => 1, //設定讀取最新版本。
 'direction' => DirectionConst::CONST_FORWARD, //設定正序查詢。
 'inclusive_start_primary_key' => $startPK, //設定開始主鍵。
 'exclusive_end_primary_key' => $endPK, //設定結束主鍵。
 'limit' => 10 //設定最多返回10行資料。
];
$response = $otsClient->getRange ($request);
print "Read CU Consumed: {$response['consumed']['capacity_unit']['read']}\n";

foreach ($response['rows'] as $rowData) {
 //處理每一行資料。
} 

常見問題

相關文檔

  • 當日常業務中有非主鍵列查詢、多列組合查詢、模糊查詢等多維查詢需求以及求最值、統計行數、資料分組等資料分析需求時,您可以將這些屬性作為多元索引中的欄位並使用多元索引查詢與分析資料。 更多資訊,請參見多元索引

  • 如果需要使用SQL查詢和分析資料,您可以使用SQL查詢功能實現。更多資訊,請參見SQL查詢