# 9 tipos de índices de banco: guia técnico

> Índices de banco de dados são estruturas auxiliares que aceleram consultas de leitura ao custo de espaço em disco e desempenho de escrita. Os nove tipos mais utilizados incluem B-tree, hash, bitmap, GiST, GIN, BRIN, SP-GiST, índice invertido e índice vetorial, cada um adequado a cenários específicos de consulta e volume de dados.

*Pingobox · Apps e Software · 16 de setembro de 2026 · Gustavo Sequeira*

Índices de banco de dados são estruturas auxiliares que reduzem o custo de leitura em troca de espaço e tempo de escrita. Os nove tipos mais usados vão do B-tree ao índice vetorial, cada um com um cenário ideal.

Índices de banco de dados são estruturas auxiliares que reduzem o custo de leitura em troca de espaço em disco e tempo de escrita. Os nove tipos mais usados vão do B-tree ao índice vetorial, e a escolha errada transforma um ganho de milissegundos em um problema de armazenamento.

Os principais tipos de índices de banco de dados são B-tree, hash, bitmap, GiST, GIN, BRIN, colunar, invertido e vetorial. Cada um organiza as chaves de forma diferente e serve a um padrão de consulta: igualdade, intervalo, texto, geolocalização ou similaridade vetorial.

## 1. B-tree

É o índice padrão da maioria dos bancos relacionais, como PostgreSQL e MySQL. Mantém as chaves ordenadas em uma árvore balanceada, o que atende igualdade, intervalo e ordenação na mesma estrutura. O custo aparece na escrita: cada INSERT ou UPDATE reequilibra a árvore. Em tabelas com alto volume de gravação, o ganho de leitura precisa compensar esse overhead.

## 2. Hash

Armazena o hash da chave e só responde a comparações de igualdade. Não serve para WHERE data > '2024-01-01'. Onde funciona bem: tabelas de sessão ou cache, com chave única e consultas pontuais. O PostgreSQL desaconselha hash para uso geral, mas mantém suporte para casos específicos.

## 3. Bitmap

Representa cada valor distinto como um vetor de bits. Brilha em colunas de baixa cardinalidade, como status ou UF, especialmente em data warehouses. O problema é a concorrência: um UPDATE bloqueia grandes faixas do bitmap, o que inviabiliza o uso em sistemas transacionais com escrita frequente.

## 4. GiST (Generalized Search Tree)

Estrutura genérica para dados que não cabem em uma ordenação simples, como geometrias e intervalos. É a base de índices espaciais no PostGIS. Uma consulta do tipo "pontos dentro deste polígono" passa de varredura completa para busca em árvore. Exige extensão específica e operadores compatíveis.

## 5. GIN (Generalized Inverted Index)

Mapeia cada elemento de um valor composto para as linhas que o contêm. É o índice típico para arrays, JSONB e busca textual no PostgreSQL. Em uma coluna tags com 50 valores possíveis, o GIN evita varrer a tabela inteira. O custo: escrita mais lenta e índice maior que o B-tree equivalente.

## 6. BRIN (Block Range Index)

Guarda o mínimo e o máximo de cada bloco de páginas, não de cada linha. Ocupa uma fração do espaço de um B-tree. Funciona quando os dados estão fisicamente ordenados, como tabelas de log com timestamp crescente. Se a ordem física se quebra, o BRIN perde eficácia e volta a ler blocos demais.

## 7. Colunar

Em vez de agrupar por linha, agrupa por coluna. Bancos analíticos como ClickHouse e Amazon Redshift usam esse layout para varrer milhões de registros em uma única coluna sem tocar nas demais. É a escolha para agregações e relatórios, não para transações ponto a ponto.

## 8. Invertido

O índice invertido associa cada termo a uma lista de documentos que o contêm. É a espinha dorsal de mecanismos de busca como Elasticsearch e Apache Lucene. Suporta relevância, sinônimos e busca por frase. Em bancos relacionais, aparece via extensões de full-text search.

## 9. Vetorial

Projetado para similaridade entre vetores de alta dimensão, usado em aplicações de IA e busca semântica. Estruturas como HNSW e IVF aproximam o vizinho mais próximo sem comparar todos os vetores. A troca é explícita: recall ligeiramente menor em nome de latência muito menor.

## Qual escolher

Comece pelo B-tree, que resolve a maioria dos casos transacionais. Se a coluna tem baixa cardinalidade e o sistema é analítico, avalie bitmap. Para JSONB, arrays ou texto, GIN. Para séries temporais ordenadas fisicamente, BRIN. Busca semântica pede índice vetorial, não B-tree com função de distância. Meça com EXPLAIN ANALYZE antes de criar o próximo índice: cada estrutura adicional encarece toda escrita na tabela.

## FAQ

### O que é um índice de banco de dados?

É uma estrutura auxiliar que mantém uma cópia ordenada ou mapeada de uma ou mais colunas, permitindo ao banco localizar linhas sem varrer a tabela inteira. O ganho vem às custas de espaço em disco e de tempo extra em cada operação de escrita.

### Qual é o tipo de índice mais usado?

O B-tree. É o padrão em PostgreSQL, MySQL, SQL Server e Oracle porque atende igualdade, intervalos e ordenação com bom desempenho geral. Os demais tipos existem para padrões de consulta que o B-tree não cobre bem.

### Quando não usar índice?

Em tabelas pequenas, colunas com pouca seletividade ou cargas dominadas por escrita. Um índice em coluna booleana raramente ajuda e ainda pesa em cada INSERT. O planejador pode ignorá-lo de qualquer forma.

### Índice hash é melhor que B-tree para igualdade?

Em teoria, o hash tem busca em tempo constante. Na prática, o B-tree entrega desempenho próximo e cobre mais casos, por isso é o padrão. O hash fica restrito a cenários muito específicos de chave única.

### O que é índice vetorial?

É uma estrutura que organiza vetores de embedding para permitir busca por similaridade aproximada. Aparece em bancos como pgvector, Milvus e Pinecone, usada em recomendação, busca semântica e aplicações com modelos de linguagem.

### Posso ter vários índices na mesma tabela?

Pode, mas cada índice adicional aumenta o custo de escrita e o espaço ocupado. O ideal é criar índices para os padrões de consulta realmente frequentes e revisar periodicamente os que nunca aparecem nos planos de execução.

---

Fonte (canonical): https://www.pingobox.com.br/apps-e-software/9-tipos-de-indices-de-banco-guia-tecnico/
