# Índice banco dados: o que é e quando criar

> Índice de banco de dados é uma estrutura auxiliar que acelera consultas ao permitir localização rápida de registros, similar a um sumário. A criação de índices é recomendada em tabelas com grande volume de dados e consultas frequentes por colunas específicas. Índices não são benéficos em tabelas pequenas ou com operações intensivas de inserção e atualização, pois aumentam o custo de manutenção.

*Blog Sem Juízo · Novidades · 21 de julho de 2026 · Babi Cordeiro*

Um índice de banco de dados é uma estrutura que acelera a localização de registros, como um sumário. Mas nem sempre compensa criá-lo. Saiba quando usar.

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

Um índice de banco de dados é, segundo a Wikipedia, "uma referência associada a uma chave, que é utilizada para fins de otimização, permitindo uma localização mais rápida de um registro". Pense como o índice de um livro: em vez de folhear página por página, você vai direto ao capítulo. No banco, o índice funciona como uma estrutura separada que aponta para onde os dados estão armazenados.

## Como um índice melhora a performance?

Quando você faz uma consulta com WHERE, JOIN ou ORDER BY, o banco precisa percorrer todas as linhas da tabela (full scan) para encontrar os registros. Com um índice, ele localiza rapidamente a posição exata. Isso reduz drasticamente o tempo de resposta, especialmente em tabelas com milhões de linhas.

## Quando criar um índice?

Crie índices em colunas que aparecem com frequência em:

- Filtros: WHERE cliente_id = 123
- Junções: JOIN pedidos ON clientes.id = pedidos.cliente_id
- Ordenações: ORDER BY data_criacao DESC

Também vale para colunas usadas em buscas de texto com LIKE 'prefixo%'.

## Quando evitar criar um índice?

Evite índices em:

- Tabelas muito pequenas (menos de 1000 registros): o custo de manter o índice supera o ganho.
- Colunas com baixa cardinalidade: por exemplo, uma coluna status com apenas 3 valores possíveis. O índice não ajuda porque cada valor aponta para muitos registros.
- Colunas que sofrem muitas inserções, atualizações ou exclusões: cada operação de escrita exige que o índice seja atualizado, o que pode piorar a performance.

## Quais os tipos de índice mais comuns?

Os bancos relacionais oferecem principalmente:

- Índice B-Tree (padrão na maioria dos SGBDs): eficiente para buscas por igualdade e intervalos.
- Índice Hash: ótimo para buscas exatas, mas não suporta ordenação.
- Índice Bitmap: indicado para colunas com poucos valores distintos (ex.: sexo, status).

Cada banco tem suas particularidades. Consulte a documentação do seu SGBD.

## Como criar um índice na prática?

No SQL padrão, a sintaxe é simples:

CREATE INDEX idx_nome_coluna ON nome_tabela (coluna);

Você pode criar índices compostos (várias colunas) e até índices únicos para garantir unicidade. Exemplo:

CREATE UNIQUE INDEX idx_email_unico ON usuarios (email);

## Resumo prático

Crie índices em colunas de filtro, junção e ordenação, mas só depois de analisar o plano de execução das consultas. Monitore o desempenho e remova índices não utilizados. Lembre-se: índice acelora leitura, mas custa escrita e espaço.

## FAQ

### Índice de banco de dados deixa a consulta mais rápida?

Sim, desde que a coluna indexada seja usada no filtro ou na junção. O banco vai direto aos registros, sem percorrer a tabela inteira.

### Qual a diferença entre índice clusterizado e não clusterizado?

Índice clusterizado reorganiza a ordem física dos dados na tabela (só um por tabela). O não clusterizado mantém a ordem original e cria uma estrutura separada com ponteiros.

### Índice ocupa espaço no banco?

Ocupa. Cada índice é uma estrutura armazenada em disco. Quanto mais índices, mais espaço e mais tempo para backups.

### Posso criar índice em coluna de texto?

Pode, mas o índice será menos eficiente se o texto for muito longo. Prefira índices parciais ou use full-text search para buscas textuais.

### Como saber se um índice está sendo usado?

Consulte o plano de execução da consulta (EXPLAIN no MySQL, plano de execução no SQL Server). Ele mostra se o índice foi utilizado ou se houve full scan.

### Índice acelera INSERT e UPDATE?

Não. Pelo contrário: cada INSERT ou UPDATE que modifica uma coluna indexada exige que o índice seja atualizado, o que pode tornar a operação mais lenta.

---

Fonte (canonical): https://blogsemjuizo.com.br/novidades/indice-banco-dados-o-que-e-e-quando-criar/
