Comece pelas queries, não pela tabela. Veja o que aparece em WHERE, JOIN e ORDER BY, e então construa um índice composto com as colunas de igualdade primeiro e a coluna de faixa ou de ordenação por último. Confirme com EXPLAIN ANALYZE que uma varredura por índice substituiu a varredura sequencial. Todo índice custa throughput de escrita e armazenamento, então remova os não usados e evite indexar sozinha uma coluna de baixa cardinalidade.
Por que os entrevistadores perguntam isso
Indexação é a habilidade de banco de maior alavancagem que um desenvolvedor full stack pode ter, e é fácil fingir até alguém perguntar sobre a ordem das colunas. O entrevistador quer saber se você lê planos de query, se você entende que índices são um imposto sobre escrita e não velocidade de graça, e se você notaria que adicionar um índice por coluna é um erro comum e caro.
Como estruturar sua resposta
- Diga que os índices seguem os padrões de query, não o schema.
- Explique a ordenação das colunas em um índice composto.
- Descreva como você verifica com o plano de query.
- Cite o lado do custo: escritas, armazenamento, índices não usados.
Exemplo de resposta
Eu trabalho de trás para frente a partir do log de queries lentas em vez de chutar na hora do desenho. Pegue uma query filtrando por tenant id e status e ordenando por created at. O índice certo ali é em tenant id, status, created at nessa ordem, porque predicados de igualdade vêm primeiro e a coluna de ordenação vem por último para o índice também atender a ordenação. Coloque created at primeiro e o índice fica quase inútil para aquela query. Depois eu de fato rodo EXPLAIN ANALYZE e confiro se o plano mudou e se as estimativas de linhas fazem sentido, porque o planejador vai ignorar um índice se ele achar que aquilo vai casar com a maior parte da tabela mesmo. No lado do custo, eu já vi uma tabela pesada de escrita com onze índices em que os inserts eram o gargalo, e remover quatro não usados praticamente dobrou a taxa de ingestão. No Postgres eu checo o pg_stat_user_indexes em busca de índices com zero varreduras antes de propor a remoção de qualquer coisa, e crio índices de forma concorrente em uma tabela ao vivo.
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
- O que é um índice de cobertura e quando ele ajuda?
- Por que o planejador pode ignorar um índice que você acabou de criar?
- Quando você usaria um índice parcial no lugar?
Mais perguntas para Desenvolvedor Full Stack
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