0Pricing
Coding Interview Prep · Aula

Índices B-Tree e como eles ajudam

O que um índice realmente armazena e quais operações ele acelera.

Índices B-Tree e como eles ajudam é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 1 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 Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

Por que os entrevistadores perguntam sobre índices

Quando um entrevistador diz 'esta consulta está lenta; como você procede?', a resposta que ele quase sempre espera envolve um índice. Os índices são a maior alavanca individual para o desempenho de leitura; por isso, eles distinguem os candidatos que memorizaram a sintaxe daqueles que entendem como um banco de dados realmente encontra as linhas.

Nesta lição, você construirá um modelo mental preciso do índice de árvore B: o que ele armazena, quais operações ele acelera e como falar sobre ele da maneira que um engenheiro sênior falaria.

O problema resolvido por um índice

Sem um índice, encontrar as linhas que correspondem a uma condição força o banco de dados a ler todas as linhas da tabela. Isso é uma varredura sequencial (ou varredura completa da tabela). Em uma tabela com um milhão de linhas, isso significa verificar um milhão de linhas, mesmo que apenas uma corresponda.

Um índice é uma estrutura de dados separada e ordenada que permite ao mecanismo saltar diretamente para as linhas correspondentes, assim como o índice de um livro permite encontrar um tema sem ler todas as páginas.

-- No index: the engine reads ALL rows to find this one
SELECT * FROM users WHERE email = 'ada@example.com';

O que uma árvore B realmente armazena

O índice padrão no PostgreSQL, MySQL, SQL Server e na maioria dos mecanismos é uma árvore B (árvore balanceada). Ela armazena os valores da coluna indexada em ordem ordenada, organizados em uma árvore rasa de páginas.

  • Cada nó folha contém as chaves do índice e um ponteiro para a linha real da tabela.
  • A árvore permanece balanceada, portanto qualquer busca acessa apenas algumas páginas, independentemente do tamanho da tabela.

Uma busca percorre o caminho da raiz até uma folha em aproximadamente log(N) etapas, em vez de varrer todas as N linhas.

Criando seu primeiro índice

Você cria um índice de árvore B com CREATE INDEX. Dê-lhe um nome claro para que um revisor identifique a tabela e as colunas rapidamente.

Depois que esse índice existe, uma consulta que filtra por email pode usá-lo para encontrar a linha correspondente com poucas leituras de páginas, em vez de fazer uma varredura completa.

CREATE INDEX idx_users_email ON users (email);

-- Now this lookup uses the index instead of scanning
SELECT * FROM users WHERE email = 'ada@example.com';

Operações aceleradas por uma árvore B

Como uma árvore B mantém os valores ordenados, ela acelera muito mais do que correspondências exatas. Os entrevistadores valorizam quando você lista estas operações com precisão:

  • Igualdade: WHERE email = ?
  • Intervalo: WHERE age > 30, BETWEEN, <, >=
  • Correspondência por prefixo: WHERE name LIKE 'Ada%' (mas NOT '%da')
  • ORDER BY na coluna indexada, evitando uma ordenação
  • MIN/MAX, pois ficam nas extremidades da estrutura ordenada

Exemplo resolvido: consulta por intervalo

Considere uma tabela de pedidos com milhões de linhas. Uma consulta de relatório solicita os pedidos recentes. Com um índice em created_at, o mecanismo procura o início do intervalo no índice ordenado e avança apenas até onde for necessário.

O índice transforma uma varredura completa da tabela em uma varredura de intervalo limitado, lendo apenas o trecho que atende aos critérios.

CREATE INDEX idx_orders_created_at ON orders (created_at);

SELECT order_id, total
FROM orders
WHERE created_at >= '2026-01-01'
  AND created_at <  '2026-02-01';

Os índices também ajudam na ordenação

Um ponto frequentemente ignorado: como o índice já está ordenado, o mecanismo pode retornar as linhas na ordem do índice e pular uma etapa de ordenação separada. Isso é importante para ORDER BY e especialmente para a paginação dos primeiros N resultados.

Se você ordenar por uma coluna que tem um índice correspondente, o otimizador poderá ler o índice em ordem e parar antecipadamente assim que tiver linhas suficientes.

-- Index on created_at lets this avoid a sort and stop after 10 rows
SELECT order_id, total
FROM orders
ORDER BY created_at DESC
LIMIT 10;

O custo oculto: o segundo acesso à tabela

Um índice de árvore B normal armazena apenas a coluna indexada e um ponteiro para a linha. Portanto, depois de encontrar as entradas correspondentes, o mecanismo ainda precisa acessar a tabela (a área de dados) para ler as outras colunas selecionadas.

Esse segundo acesso é barato para poucas linhas, mas caro quando uma consulta corresponde a muitas linhas; esse é um dos motivos pelos quais um índice de baixa seletividade às vezes é ignorado. (Mais adiante, você verá como os índices de cobertura resolvem esse problema.)

Confirmando que o índice é usado

Nunca afirme que um índice é usado; comprove isso com EXPLAIN. Em uma entrevista, narrar o plano demonstra compreensão real.

  • Seq Scan significa que o índice NOT foi usado.
  • Index Scan ou Index Seek significa que ele foi usado.

Se você adicionou um índice, mas ainda vê uma varredura sequencial, o planejador considerou a varredura mais barata, geralmente porque a consulta corresponde a uma fração grande demais da tabela.

EXPLAIN
SELECT * FROM users WHERE email = 'ada@example.com';
-- Look for: Index Scan using idx_users_email

As chaves primárias já são indexadas

Uma armadilha comum em entrevistas: declarar uma restrição PRIMARY KEY ou UNIQUE cria automaticamente um índice de árvore B de suporte. Você não precisa, nem deve, adicionar um segundo índice na mesma coluna.

É por isso que as junções e buscas por chaves primárias já são rápidas e que a pergunta 'devo indexar a coluna id?' geralmente é uma armadilha: isso já é feito automaticamente.

-- This already builds a unique B-Tree index on (id)
CREATE TABLE users (
  id    BIGINT PRIMARY KEY,
  email TEXT UNIQUE
);

Como formular a resposta na entrevista

Una tudo em uma frase clara que o entrevistador possa acompanhar:

'Um índice de árvore B é uma estrutura ordenada e balanceada que permite ao mecanismo encontrar linhas em leituras de páginas de custo logarítmico log(N), em vez de varrer a tabela inteira. Ele acelera operações de igualdade, intervalo, prefixo e ORDER BY nas colunas indexadas, mas cada correspondência ainda exige um segundo acesso à tabela para obter as colunas que não estão no índice.'

Depois, comprove a afirmação com EXPLAIN. Essa combinação de modelo e evidência é o que rende pontos.

Verificação rápida

Teste seu modelo mental sobre as operações aceleradas por um índice de árvore B.

Recapitulação: índices de árvore B

Principais conclusões para levar à próxima lição:

  • Uma árvore B armazena os valores indexados de forma ordenada em uma árvore balanceada, proporcionando buscas em log(N).
  • Ela acelera igualdade, intervalo, prefixo (LIKE inicial), ORDER BY e MIN/MAX.
  • Cada correspondência ainda exige um segundo acesso à tabela para obter as colunas que não estão no índice.
  • Envolver uma coluna em uma função ou usar um caractere curinga inicial desativa o índice.
  • Sempre verifique com EXPLAIN; as restrições PRIMARY KEY e UNIQUE criam índices automaticamente.

A seguir: como ordenar as colunas quando um índice cobre várias delas ao mesmo tempo.

Perguntas Frequentes

A aula “Índices B-Tree e como eles ajudam” é grátis?

Sim — o texto completo de “Índices B-Tree e como eles ajudam” é 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 Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “Índices B-Tree e como eles ajudam”?

O que um índice realmente armazena e quais operações ele acelera. Você pratica Coding Interview Prep 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 Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep 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 1 de 4.

Quanto tempo leva a aula “Índices B-Tree e como eles ajudam”?

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 Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep 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. Índices B-Tree e como eles ajudam
  2. Ordem das colunas em índices compostos
  3. Índices de cobertura e varreduras somente de índice
  4. Quando os índices prejudicam: gravações e seletividade
← Voltar para Coding Interview Prep