Pergunta de entrevista para Desenvolvedor Full Stack

Como você decide quais índices uma tabela precisa?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

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

Exemplo falado, em primeira pessoa

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 funciona

Perguntas 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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot