Um índice é uma estrutura ordenada separada, geralmente uma árvore B, mapeando valores de coluna para localizações de linha para o engine poder buscar em vez de varrer. Ele acelera leituras que filtram ou ordenam por essas colunas. Ele custa nas escritas, já que cada insert, update e delete tem que mantê-lo, e custa armazenamento. Colunas de baixa seletividade e índices que nada consulta costumam ser prejuízo líquido.
Por que os entrevistadores perguntam isso
Índices são a ferramenta de maior alavancagem disponível para a maioria dos engenheiros e a mais fácil de virar culto de carga. O entrevistador está checando se você entende o lado de escrita da troca, se você sabe que a seletividade determina se o planner vai sequer usar o índice, e se você consegue explicar por que indexar toda coluna não é estratégia. Também abre a porta para planejamento de queries.
Como estruturar sua resposta
- Descreva o índice como uma estrutura de busca ordenada com ponteiros para linhas.
- Explique o benefício de leitura em termos de seeks versus varreduras.
- Cite os custos de escrita e de armazenamento explicitamente.
- Dê um caso em que o planner ignora o índice mesmo assim.
Exemplo de resposta
Um índice é essencialmente uma cópia ordenada de uma ou mais colunas com ponteiros de volta para as linhas, geralmente uma árvore B, para o engine poder fazer busca binária em vez de ler cada página. Isso transforma um filtro numa tabela grande de uma varredura sequencial em um punhado de leituras de página. O custo é que toda escrita tem que atualizar o índice também, então uma tabela com oito índices paga oito vezes no insert, e cargas em massa ficam bem mais lentas. A outra coisa que eu observo é a seletividade. Se uma coluna é um booleano que é verdadeiro em noventa por cento das linhas, o planner geralmente vai só varrer, porque acesso aleatório a tantas linhas custa mais do que ler sequencialmente. Tive um caso em que alguém adicionou um índice numa coluna de status com três valores e nada melhorou. O que de fato resolveu foi um índice composto em tenant id e created at, casando com o filtro e a ordenação, para o banco poder buscar e depois ler em ordem sem um passo separado de ordenação.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Por que a ordem das colunas importa num índice composto?
- O que um índice de cobertura te dá?
- Como você saberia se o planner está usando o seu índice?
Mais perguntas para Engenheiro de Software
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas