Sobes.tech
Junior

O que é indexação no contexto de bancos de dados ou coleções?

sobes.tech IA

Resposta da IA

A indexação é uma técnica de otimização de desempenho na recuperação de dados.

Em bases de dados, um índice é uma estrutura (por exemplo, uma árvore B) que permite encontrar rapidamente linhas numa tabela, sem percorrer toda a tabela. É criado numa ou várias colunas.

Em coleções (por exemplo, ArrayList em Java), a indexação está incorporada. Os elementos são armazenados numa sequência ordenada, e o acesso a qualquer elemento por índice (o seu número de ordem) é feito em O(1).

Principais objetivos da indexação:

  • Acelerar a execução de consultas: Especialmente para operações SELECT com condições WHERE e JOIN.
  • Garantir a unicidade: Índices únicos garantem que os valores na coluna indexada ou na combinação de colunas sejam únicos.
  • Suporte para ordenação: Os índices podem ser usados para ordenar rapidamente os resultados (ORDER BY).

Exemplos de uso em SQL:

-- Criar um índice na coluna price
CREATE INDEX idx_products_price ON products (price);

-- Criar um índice composto nas colunas customer_id e order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);

Em coleções, acesso por índice:

// Obter elemento por índice
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Acesso por índice 0

Desvantagens da indexação:

  • Ocupa espaço adicional em disco.
  • Operações de alteração de dados (INSERT, UPDATE, DELETE) tornam-se mais lentas, pois é necessário atualizar também o índice.
  • Nem sempre são utilizados pelo otimizador de consultas (por exemplo, em varreduras completas de tabela).