Todos os produtos
Search
Central de documentação

Tablestore:Usar um índice secundário para ler dados

Última atualização: Jul 03, 2026

Tablestore oferece métodos de leitura de linha única e de intervalo para ler dados de tabelas de índice. Se uma tabela de índice contiver as colunas de atributo que você deseja recuperar, leia os dados diretamente dela. Caso contrário, consulte os dados na tabela primária.

Pré-requisitos

Precauções

  • Tabelas de índice servem apenas para leitura de dados.

  • A primeira coluna de chave primária de uma tabela de índice secundário local deve ser idêntica à primeira coluna de chave primária da tabela primária.

  • Caso as colunas de atributo a serem recuperadas não estejam na tabela de índice, busque os dados na tabela primária.

Ler uma única linha de dados

Chame a operação GetRow para ler uma única linha de dados. Para mais informações, consulte Ler uma única linha.

Parâmetros

Ao chamar a operação GetRow para ler dados de uma tabela de índice, observe os seguintes itens:

  • Defina o parâmetro table_name com o nome da tabela de índice.

  • O Tablestore adiciona automaticamente as colunas de chave primária da tabela de dados que não foram especificadas como colunas de índice a uma tabela de índice, definindo-as como colunas de chave primária dessa tabela de índice. Portanto, ao especificar as colunas de chave primária de uma linha em uma tabela de índice, inclua tanto as colunas de índice usadas na criação quanto as colunas de chave primária da tabela de dados.

Exemplos

O código de exemplo a seguir demonstra como ler uma linha de dados em uma tabela de índice com base na chave primária da linha:

$request = [
 'table_name' => '<INDEX_NAME>', // Specify the name of the index table. 
 'primary_key' => [ // Specify the primary key of the row based on which you want to read data. If you want to read data from a local secondary index, the first primary key column of the index table must be the same as the first primary key column of the data table. 
 ['PK0', 123],
 ['Col1', "abc"],
 ['PK1', 'abc']
 ],
 'max_versions' => 1, // Specify that the latest version of data is read. 
 'columns_to_get' => ['Col1'] // Specify the attribute columns that you want to return. 
];
$response = $otsClient->getRow($request); 

Ler dados cujos valores de chave primária estão dentro de um intervalo específico

Chame a operação GetRange para ler dados cujos valores de chave primária estejam dentro de um intervalo específico. Para mais informações, consulte Ler dados em um intervalo.

Parâmetros

Ao chamar a operação GetRange para ler dados de uma tabela de índice, observe os seguintes itens:

  • Defina o parâmetro table_name com o nome da tabela de índice.

  • O Tablestore adiciona automaticamente as colunas de chave primária da tabela de dados que não foram especificadas como colunas de índice a uma tabela de índice, definindo-as como colunas de chave primária dessa tabela de índice. Assim, ao especificar a chave primária inicial e final do intervalo que deseja consultar, inclua tanto as colunas de índice usadas na criação quanto as colunas de chave primária da tabela de dados.

Exemplos

O código de exemplo a seguir demonstra como ler dados cujos valores de chave primária estão dentro de um intervalo específico em uma tabela de índice:

// Query the rows in which the value of the PK0 column is in the range of [1, 4). 
// You must specify values for all primary key columns when you specify a range. If the range does not involve the values of a column, set the value of the column to an infinitely great value (INF_MAX) or an infinitely small value (INF_MIN). 
// If you want to read data from a local secondary index, the first primary key column of the index table must be the same as the first primary key column of the data table. 
$startPK = [
 ['Col1', "abc"], 
 ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MIN] // INF_MIN indicates the minimum value. 
 ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MIN] // INF_MIN indicates the minimum value. 
];
// You must specify values for all primary key columns when you specify a range. If the range does not involve the values of a column, set the value of the column to an infinitely great value (INF_MAX) or an infinitely small value (INF_MIN). 
$endPK = [
 ['Col1', "abc"],
 ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MAX] // INF_MAX indicates the maximum value. 
 ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MAX] // INF_MAX indicates the maximum value. 
];
$request = [
 'table_name' => '<INDEX_NAME>', // Specify the name of the index table. 
 'max_versions' => 1, // Specify that the latest version of data is read. 
 'direction' => DirectionConst::CONST_FORWARD, // Query data in the forward direction. 
 'inclusive_start_primary_key' => $startPK, // Specify the start primary key. 
 'exclusive_end_primary_key' => $endPK, // Specify the end primary key. 
 'limit' => 10 // Specify that up to 10 rows of data can be returned. 
];
$response = $otsClient->getRange ($request);
print "Read CU Consumed: {$response['consumed']['capacity_unit']['read']}\n";

foreach ($response['rows'] as $rowData) {
 // Process each row of data. 
} 

Perguntas frequentes

Referências

  • Se o seu cenário exigir consultas multidimensionais e análise de dados, crie um índice de pesquisa e especifique os atributos necessários como campos desse índice. Em seguida, use o índice de pesquisa para consultar e analisar dados. Por exemplo, é possível realizar consultas baseadas em colunas que não são de chave primária, consultas booleanas e consultas difusas. Também é viável obter valores máximos e mínimos, coletar estatísticas sobre o número de linhas e agrupar resultados de consulta. Para mais informações, consulte Índice de pesquisa.

  • Para executar instruções SQL visando consultar e analisar dados, utilize o recurso de consulta SQL. Para mais informações, consulte Consulta SQL.