Todos os produtos
Search
Central de documentação

Tablestore:A API GetRange retorna dados fora do intervalo especificado

Última atualização: Jun 23, 2026

Se a API GetRange retornar dados fora do intervalo especificado, crie um índice secundário para reordenar as chaves primárias e consulte o índice em vez da tabela base.

Sintomas

Ao executar consultas de intervalo — pelo console, por um SDK, por tabelas externas do Tablestore ou pelo Tablestore Reader — a API GetRange retorna linhas fora do intervalo especificado.

Possíveis causas

A condição de consulta não segue a regra de correspondência de prefixo mais à esquerda.

O Tablestore ordena fisicamente as linhas pelas colunas de chave primária, seguindo a ordem de definição no esquema da tabela. Um intervalo definido em uma coluna de chave primária só tem efeito quando todas as colunas anteriores possuem valores exatos (não de intervalo). Se qualquer coluna anterior usar um intervalo, o sistema ignora silenciosamente os intervalos definidos nas colunas subsequentes.

null

Regra de correspondência de prefixo mais à esquerda — o que funciona e o que não funciona:

  • Funciona: Definir um valor exato para a primeira coluna de chave primária e um intervalo para a segunda coluna retorna apenas as linhas em que a segunda coluna está dentro desse intervalo.

  • Não funciona: Definir um intervalo para a primeira coluna de chave primária e um intervalo (ou valor exato) para a segunda coluna — a condição na segunda coluna é ignorada.

Por exemplo, se beginPrimaryKey = INF_MIN e endPrimaryKey = INF_MAX para a primeira coluna, e beginPrimaryKey = 10 e endPrimaryKey = 10 para a segunda coluna, a consulta retorna todas as linhas da tabela, e não apenas as linhas em que a segunda coluna é igual a 10. O intervalo da primeira coluna abrange todo o espaço de chaves, portanto a condição da segunda coluna não tem efeito.

Soluções

Crie um índice secundário para reordenar as chaves primárias de forma que a coluna pela qual deseja filtrar se torne a chave líder. Consulte o índice secundário diretamente em vez da tabela base. Isso permite aplicar uma condição de intervalo eficaz sem alterar o esquema da tabela.

Escolha a abordagem adequada ao seu cenário:

  • Consultas de intervalo pelo console ou SDK — Sem um índice secundário, é necessário varrer toda a tabela e descartar as linhas indesejadas. Com um índice secundário, execute a consulta de intervalo diretamente no índice. Para instruções passo a passo, consulte Usar um índice secundário pelo console ou Usar um índice secundário com um SDK.

  • Consultas de tabelas externas do Tablestore — Defina o nome da tabela na instrução CREATE TABLE como o nome do índice secundário. Isso direciona a consulta da tabela externa pelo índice e aplica corretamente a condição de intervalo. Para mais detalhes, consulte Tabelas externas do Tablestore.

  • Sincronização de dados com o Tablestore Reader — Defina o nome da tabela no script de sincronização como o nome do índice secundário. O job de sincronização lê o índice e respeita o intervalo definido. Para mais detalhes, consulte Configurar o Tablestore (OTS) Reader.