Este tópico descreve os índices inteligentes integrados do ApsaraDB for SelectDB e como usá-los.
Informações básicas
Os índices permitem filtrar ou consultar dados rapidamente. O ApsaraDB for SelectDB oferece suporte aos seguintes tipos de índice:
Índices inteligentes integrados, incluindo índices de mapa de zona e índices de prefixo.
Índices secundários personalizados, incluindo índices invertidos, índices bitmap, índices Bloom filter e índices NGram Bloom filter. Para obter mais informações, consulte Índice invertido, Índices bitmap, Índices Bloom filter e Índices NGram Bloom filter.
Índice de mapa de zona
O índice de mapa de zona contém as informações mantidas automaticamente para cada coluna no formato de armazenamento orientado a colunas, incluindo valores mínimos (Min), máximos (Max) e a quantidade de valores NULL. O ApsaraDB for SelectDB cria e mantém esses índices automaticamente.
Índice de prefixo
O ApsaraDB for SelectDB difere dos bancos de dados tradicionais. Trata-se de um banco de dados de processamento analítico online (OLAP) que usa arquitetura de processamento massivamente paralelo (MPP) para lidar com grandes volumes de dados mediante aumento da concorrência. Além disso, o ApsaraDB for SelectDB pode operar em conjunto com esquemas de índice para acelerar consultas.
Os dados no ApsaraDB for SelectDB residem em uma estrutura semelhante a uma tabela de strings ordenadas (SSTable). Essa estrutura ordenada classifica e armazena dados com base em colunas especificadas, permitindo consultas eficientes pelas colunas de classificação.
Nos modelos de chave Aggregate, Unique e Duplicate, o armazenamento subjacente classifica e organiza os dados conforme as colunas definidas nas instruções AGGREGATE KEY, UNIQUE KEY e DUPLICATE KEY usadas na criação das tabelas. Após a classificação, o índice de prefixo viabiliza consultas rápidas com base nas colunas de prefixo indicadas.
Exemplos
O exemplo a seguir usa os primeiros 36 bytes de uma linha de dados como índice de prefixo. Se os dados forem do tipo VARCHAR, o índice de prefixo será truncado. Exemplo:
-
Neste esquema, o índice de prefixo corresponde a user_id(8 Bytes)+age(4 Bytes)+message(prefixo de 20 Bytes).
ColumnName
Type
user_id
BIGINT
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Especifique o prefixo do índice de prefixo como condição de busca para acelerar a consulta. Execute as seguintes instruções de consulta:
Exemplo 1:
SELECT * FROM table WHERE user_id=1829239 and age=20;Exemplo 2:
SELECT * FROM table WHERE age=20;A velocidade da consulta no Exemplo 1 é significativamente superior à do Exemplo 2. Ao criar uma tabela, ordene as colunas corretamente para melhorar a eficiência das consultas.
-
No esquema abaixo, o índice de prefixo é user_name(20 Bytes). Como os dados são do tipo VARCHAR, o índice não atinge 36 bytes e sofre truncamento.
ColumnName
Type
user_name
VARCHAR(20)
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Modifique um índice de prefixo usando uma materialized view
As colunas de uma tabela seguem uma ordem específica durante a criação, portanto, cada tabela possui apenas um índice de prefixo. Se as consultas usarem colunas que não acionam esse índice, a eficiência pode ficar abaixo dos requisitos do negócio. Nesse caso, crie uma materialized view para alterar a ordem das colunas. Para mais detalhes, consulte Materialized view síncrona.