← VOLTAR AO BLOG/BUILD WITH AI

Índices de banco de dados explicados:a lista telefônica

Índices de banco de dados explicados com a lista telefônica: como um índice levou uma consulta de 2.300 ms a 2,3 ms, e por que toda chave estrangeira pede um.

CATEGORIABuild with AI
TEMPO DE LEITURA6 min
PUBLICADO18 de out. de 2026
AUTORLuis Goncalves
Índices de banco de dados explicados: a lista telefônica

Índices de banco de dados explicados de forma simples: um índice funciona exatamente como uma lista telefônica: em vez de ler todas as páginas para achar um nome, você vai direto nele. Sem índice, o seu banco de dados lê cada linha de uma tabela para responder a uma pergunta. Com um, uma consulta real sobre os mesmos dados caiu de 2.300 milissegundos para 2,3 — mil vezes mais rápida — porque examinou 47 linhas correspondentes em vez de 500.000.

Índices são a ferramenta de desempenho de maior alavancagem que você vai tocar na vida, não exigem nenhuma mudança de código, e a IA costuma esquecer de criá-los. Aqui está o que são, a regra que cobre 90% dos casos e os números reais de produção que mostram o que está em jogo.

Índices de banco de dados explicados: o que é um índice?

Pense em como você acha “Gonçalves” numa lista telefônica. Você não começa na página um lendo cada entrada — você aproveita o fato de que a lista está em ordem, pula para perto do G e chega ao nome em segundos. Agora imagine a mesma lista com as entradas em ordem aleatória. Achar um nome significa ler a lista inteira, toda vez, a cada busca.

Essa segunda lista telefônica é uma tabela de banco de dados sem índice. As tabelas guardam as linhas sem nenhuma ordem útil, então uma pergunta como “me mostre as tarefas deste cliente” obriga o banco a examinar cada linha e guardar as que batem — uma varredura completa. Um índice é a lista telefônica ordenada que o banco mantém ao lado: uma cópia de consulta rápida de uma coluna (ou várias) que permite pular direto para as linhas certas.

A tradução para a experiência do usuário: 2,3 segundos é uma página que o seu cliente fica olhando carregar. 2,3 milissegundos é instantâneo. Mesma consulta, mesmos dados — a única diferença é um índice.

A regra: crie índice em toda chave estrangeira

Você não precisa virar engenheiro de desempenho. Uma regra cobre a esmagadora maioria dos casos do mundo real:

Crie índice em toda chave estrangeira e em toda coluna pela qual você filtra ou ordena com frequência.

Uma chave estrangeira é qualquer coluna que aponta para outra tabela — o cliente a quem uma tarefa pertence, o projeto que uma fatura cobra, o status que um registro carrega. Num banco bem estruturado (do tipo que você obtém normalizando direito), essas colunas de referência estão por toda parte, e são justamente o que o banco usa para ligar tabelas ao responder perguntas. Cada uma delas ganha um índice. Sem exceções, sem ponderação.

Além disso, crie índices nas colunas pelas quais as suas telas filtram e ordenam o tempo todo: a organização a que cada linha pertence (a espinha dorsal dos apps multi-tenant, filtrada em praticamente toda consulta), as datas de criação para listas de “mais recentes primeiro” e o carimbo de exclusão lógica que quase toda consulta verifica para esconder registros apagados. O hábito é uma linha por coluna na hora de criar a tabela — CREATE INDEX idx_tasks_project_id ON tasks(project_id); — e é um hábito que a IA não vai manter por você: esquemas gerados costumam definir as referências e pular os índices, o que funciona perfeitamente numa demo com 50 linhas e desmorona com 500.000.

O livroA Revolução do EUpreendedorLuis Gonçalves sobre como construir um negócio de EUpreendedor com IA sem largar o emprego.Quero o livro →

Índices compostos: o segundo truque da lista telefônica

Uma lista telefônica não é ordenada por uma coisa só — é ordenada por sobrenome, depois por nome. Isso permite achar todos os “Silva”, ou exatamente “Silva, João”. O que ela não consegue é achar todos os “João”, independentemente do sobrenome — para isso, você volta a ler a lista inteira.

Um índice composto é a mesma estrutura sobre duas ou mais colunas, e obedece à mesma lei da esquerda para a direita. Um índice em (organização, status) acelera “tudo desta organização” e “tudo desta organização com este status” — mas não faz nada por “tudo com este status em todas as organizações”, porque o status é o nome, não o sobrenome.

A consequência prática: a ordem das colunas importa. Coloque primeiro a coluna pela qual você sempre filtra — num produto multi-tenant, é a organização. E índices compostos têm um poder extra: se a ordem do índice bate com a ordenação da consulta, os resultados já saem ordenados, pulando a etapa de ordenação por completo.

Quando NÃO criar índice

Índices não são de graça: cada um ocupa espaço em disco e precisa ser atualizado a cada escrita, então cada índice adicional deixa inserções e atualizações um pouco mais lentas. Quatro situações em que você deve pular:

Colunas de dois valores. Um campo verdadeiro/falso divide a tabela mais ou menos ao meio — pular para “metade da lista” não economiza nada. Tabelas pequenas. Abaixo de umas 1.000 linhas, ler a tabela inteira é praticamente instantâneo; a chave primária basta. Colunas que você nunca pesquisa. Só colunas que aparecem em filtros, ordenações ou ligações merecem índice — observações em texto livre, não. Colunas que mudam o tempo todo em tabelas com muita escrita. Cada mudança também precisa atualizar o índice; numa tabela que é muito escrita e pouco lida, essa troca sai no prejuízo.

A regra de ouro: todo índice deve justificar a própria existência com uma melhora mensurável numa consulta. Criar índice “por via das dúvidas” é como você acaba com escritas lentas e disco desperdiçado.

Números reais de produção

Três medições reais de antes e depois, cada uma de uma tela comum num produto SaaS:

CenárioAntesDepoisMelhora
Lista de tarefas (filtro por organização + status, mais recentes primeiro)847 ms0,067 ms12.641x
Painel (contagem de tarefas por projeto)1.234 ms3,4 ms363x
Relatório por período (eventos em um ano)456 ms0,4 ms1.140x

Toda linha conta a mesma história: o banco parou de ler tudo e começou a pular direto. E o fluxo que produziu esses números pode ser repetido por qualquer fundador: ache a tela lenta, peça ao banco para explicar como respondeu à consulta (todo banco de dados tem um recurso de “explain” — e pedir à IA para interpretar a saída funciona lindamente), crie o índice que a explicação aponta, meça de novo. Quando o relatório diz “examinou 500.000 linhas para devolver 20”, você achou o índice que faltava.

12 semanasA sua carreira corporativa nunca foi o planoCandidate-se à Aceleradora de EUpreendedores.Candidatar-se →

Perguntas frequentes

Como descubro quais índices estão faltando?

Siga a lentidão. Quando uma página se arrasta, pegue a consulta dela, rode o recurso de explain do seu banco e procure varreduras completas de tabela — o relatório diz literalmente quantas linhas foram lidas e quantas foram devolvidas. Os painéis de banco de dados modernos também mostram as consultas mais lentas e muitas vezes já sugerem o índice que falta. Cole qualquer coisa disso na IA para uma interpretação em português simples.

Posso ter índices demais?

Pode. Cada índice cobra um pedágio em toda escrita e ocupa disco, então uma tabela com uma dúzia de índices especulativos paga custos reais por consultas hipotéticas. Comece pela regra — chaves estrangeiras, organização, filtros comuns — e só adicione mais quando uma consulta lenta medida exigir, removendo os índices que nada usa.

Índices também aceleram as escritas?

Não — o contrário, um pouco. Um índice acelera a leitura, mas precisa ser atualizado sempre que os dados mudam, então as escritas pagam um pequeno pedágio por índice. Para um produto SaaS típico, que lê muito mais do que escreve, a troca vale esmagadoramente a pena; só não crie índice em colunas que ninguém pesquisa.

A IA vai criar os índices para mim automaticamente?

Às vezes, sem consistência — e esquecer os índices de chaves estrangeiras é uma das lacunas mais comuns em esquemas gerados por IA, porque a demo funciona bem sem eles. Deixe explícito: diga à IA que toda tabela que ela criar precisa ter índice nas chaves estrangeiras e nas colunas mais filtradas, e revise o esquema contra essa regra como um checklist.

Quão preso você está, de verdade?

Faça o Índice de Sufocamento Corporativo, a avaliação gratuita para saber se você está pronto para ser um EUpreendedor.

Começar a avaliação →