Pregunta de entrevista para Desarrollador full stack

¿Cómo decides qué índices necesita una tabla?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Parte de las consultas, no de la tabla. Mira qué aparece en WHERE, JOIN y ORDER BY, y luego construye un índice compuesto con las columnas de igualdad primero y la columna de rango u ordenación al final. Confirma con EXPLAIN ANALYZE que un escaneo de índice sustituyó al escaneo secuencial. Cada índice cuesta rendimiento de escritura y almacenamiento, así que elimina los no usados y evita indexar por sí sola una columna de baja cardinalidad.

Por qué lo preguntan los entrevistadores

Indexar es la habilidad de base de datos con mayor apalancamiento que puede tener un desarrollador full stack, y es fácil fingirla hasta que alguien pregunta por el orden de las columnas. El entrevistador quiere saber si lees planes de consulta, si entiendes que los índices son un impuesto a la escritura y no velocidad gratis, y si te darías cuenta de que añadir un índice por columna es un error común y caro.

Cómo estructurar tu respuesta

  • Di que los índices siguen los patrones de consulta, no el esquema.
  • Explica el orden de columnas en un índice compuesto.
  • Describe cómo lo verificas con el plan de consulta.
  • Nombra el lado del coste: escrituras, almacenamiento, índices sin usar.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Trabajo hacia atrás desde el log de consultas lentas en vez de adivinar en tiempo de diseño. Toma una consulta que filtra por tenant id y status y ordena por created at. El índice correcto ahí es sobre tenant id, status, created at en ese orden, porque los predicados de igualdad van primero y la columna de ordenación al final para que el índice también pueda satisfacer el orden. Pon created at primero y el índice es casi inútil para esa consulta. Luego ejecuto de verdad EXPLAIN ANALYZE y compruebo que el plan cambió y que las estimaciones de filas son razonables, porque el planificador ignorará un índice si cree que va a coincidir con casi toda la tabla igualmente. En el lado del coste, he visto una tabla con muchas escrituras y once índices donde los inserts eran el cuello de botella, y eliminar cuatro sin usar aproximadamente duplicó el rendimiento de ingesta. En Postgres consulto pg_stat_user_indexes buscando índices con cero escaneos antes de proponer eliminar nada, y los creo de forma concurrente sobre una tabla en producción.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Qué es un índice de cobertura y cuándo ayuda?
  • ¿Por qué podría el planificador ignorar un índice que acabas de añadir?
  • ¿Cuándo usarías en su lugar un índice parcial?

Más preguntas para Desarrollador full stack

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot