Douglas Legramante

Douglas Legramante

Informática

Técnico em Informática · Banco de Dados

14-Índices: Conceito e Criação

Índices: Conceito e Criação

1. O que é um índice?

Pense no índice remissivo no final de um livro grosso: em vez de ler página por página procurando "fotossíntese", você olha no índice, vê "fotossíntese — página 214" e vai direto lá. Um índice de banco de dados funciona parecido: é uma estrutura extra que o MySQL mantém para encontrar registros muito mais rápido, sem precisar olhar linha por linha.

Sem índice, o MySQL faz uma busca sequencial (full table scan): olha registro por registro até achar o que você pediu. Numa tabela com 100 mil linhas, isso pode levar segundos ou minutos. Com o índice certo, a mesma busca pode levar uma fração de segundo.

2. Vocês já usam índices, sem perceber

Boa notícia: PRIMARY KEY e UNIQUE já criam um índice automaticamente. Desde o Encontro 2, toda vez que vocês definiram uma chave primária, o MySQL já estava criando um índice por trás dos panos — é por isso que buscar um aluno pela matrícula já é rápido, mesmo sem vocês terem pedido um índice explicitamente.

Hoje aprendemos a criar índices em outras colunas — as que são muito usadas em buscas, mas não são PK nem UNIQUE.

3. CREATE INDEX

CREATE INDEX nome_do_indice ON tabela(coluna);

Exemplo:

CREATE INDEX idx_aluno_nome ON aluno(nome);

Convenção: prefixar o nome do índice com idx_, para ficar claro o que é, ao olhar a lista de objetos da tabela.

4. Verificando os índices de uma tabela

SHOW INDEX FROM aluno;

Mostra todos os índices da tabela — incluindo os automáticos (PK, UNIQUE) e os que você criou manualmente.

5. Removendo um índice

DROP INDEX idx_aluno_nome ON aluno;

6. Quando usar (e quando NÃO usar) um índice

Índice não é "sempre bom, quanto mais melhor". Ele tem um custo:

  • Acelera buscas (SELECT com WHERE, JOIN, ORDER BY na coluna indexada).
  • Desacelera um pouco as inserções/alterações (INSERT, UPDATE, DELETE) — porque, toda vez que uma linha muda, o índice também precisa ser atualizado.
  • Ocupa espaço em disco — o índice é uma estrutura extra, guardada separadamente.

Critério prático: crie índices em colunas que você usa com frequência para buscar ou ordenar (ex.: nome, e-mail, data), e evite indexar colunas que quase nunca aparecem em uma busca — o custo de manutenção não compensaria.

7. Prévia do próximo encontro

No Encontro 15, vamos escrever um script DDL completo — juntando tudo que vimos no Bloco 3 (CREATE TABLE, tipos de dados, constraints, FK, índices) num só arquivo, para o cenário da nossa biblioteca — e fazer a revisão geral do bimestre.


Vídeos sobre o assunto

Para se aprofundar