0Pricing
SQL Academy · Aula

Índices para consultas comuns

Adicione índices para as consultas que você mais executará: por usuário, por data e por chave estrangeira, e meça o impacto com EXPLAIN.

Índices para consultas comuns é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

O que é um índice?

Um índice é uma estrutura de dados separada no disco que permite ao banco de dados encontrar linhas pelo valor de uma coluna sem examinar a tabela inteira. A implementação clássica é uma árvore B.

Índices trocam desempenho de escrita por desempenho de leitura

Cada índice torna INSERT/UPDATE/DELETE um pouco mais lento (o índice também precisa ser atualizado). Não adicione índices desnecessários.

PKs recebem um índice gratuitamente

Declarar PRIMARY KEY cria automaticamente um índice exclusivo de árvore B. O mesmo acontece com colunas UNIQUE.

Indexe as colunas de chaves estrangeiras

PostgreSQL não cria índices automaticamente no lado filho de uma FK. Sempre adicione um — sem ele, excluir um registro pai examina todos os registros filhos:

CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);

Indexe as colunas usadas em WHERE

Se você filtra muito por created_at, crie um índice para essa coluna:

CREATE INDEX posts_created_at_idx ON posts(created_at DESC);

-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;

Índices compostos

Para filtros com várias colunas, um índice composto pode ser muito mais rápido do que dois índices de uma coluna:

CREATE INDEX posts_author_published_idx
  ON posts(author_id, published_at DESC);

-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;

Regra do prefixo à esquerda

Um índice composto (a, b, c) pode atender a WHERE a = ? e WHERE a = ? AND b = ? — mas NÃO a WHERE b = ? sozinho. A ordem importa.

Índices parciais

Indexe somente as linhas que você consulta:

-- Only published posts:
CREATE INDEX posts_published_idx
  ON posts(published_at DESC)
  WHERE published_at IS NOT NULL;

-- Smaller index, faster lookups for the common case.

Índices de expressão

Indexe o resultado de uma função aplicada a uma coluna:

CREATE INDEX users_email_lower_idx ON users(LOWER(email));

-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);

Não crie índices em excesso

Regras práticas:

  • Indexe a PK ✓ (automático)
  • Indexe colunas UNIQUE ✓ (automático)
  • Indexe colunas de chaves estrangeiras ✓
  • Indexe as colunas usadas em WHERE / JOIN / ORDER BY nas suas consultas mais importantes
  • Não indexe colunas com seletividade muito baixa (por exemplo, um booleano dividido em 50/50)

Meça com EXPLAIN

Antes e depois de adicionar um índice, execute EXPLAIN ANALYZE para verificar se o planejador está usando-o:

EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;

Resumo

Para o nosso blog: indexe as chaves estrangeiras (post_id nos comentários, author_id nas publicações e nos comentários) e (author_id, published_at DESC) nas publicações para consultas de "publicações mais recentes por usuário".

Verificação rápida

Você adicionou uma chave estrangeira orders.user_id REFERENCES users(id). Qual índice, se houver algum, deve criar?

Perguntas Frequentes

A aula “Índices para consultas comuns” é grátis?

Sim — o texto completo de “Índices para consultas comuns” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Índices para consultas comuns”?

Adicione índices para as consultas que você mais executará: por usuário, por data e por chave estrangeira, e meça o impacto com EXPLAIN. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Índices para consultas comuns”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Modelando um blog: usuários, publicações e comentários
  2. Escolhendo chaves e tipos
  3. Índices para consultas comuns
  4. Populando o banco de dados com dados de teste
← Voltar para SQL Academy