Usa una CTE cuando importa la legibilidad o cuando el mismo resultado intermedio se referencia más de una vez, ya que da nombre a un paso en vez de anidarlo. Las subconsultas están bien para un filtro pequeño en línea. El rendimiento es más o menos equivalente en la mayoría de motores modernos, aunque algunos materializan las CTE y otros las incorporan al plan, así que una CTE no es automáticamente más rápida ni más lenta que la consulta anidada equivalente.
Por qué lo preguntan los entrevistadores
Es en parte una pregunta de oficio y en parte un desmontaje de mitos, porque mucha gente afirma con seguridad que las CTE son más rápidas o que siempre se materializan. Los entrevistadores quieren la respuesta honesta de que el beneficio principal es la legibilidad y la reutilización, más la conciencia de que los motores planifican distinto y de que las CTE recursivas resuelven problemas de jerarquía que una subconsulta normal no puede.
Cómo estructurar tu respuesta
- Abre con legibilidad y reutilización como los motivos reales.
- Corrige el mito de que las CTE son intrínsecamente más rápidas.
- Señala las diferencias de materialización entre motores.
- Menciona las CTE recursivas para jerarquías.
- Di cuándo una subconsulta normal es de verdad la mejor opción.
Ejemplo de respuesta
Sobre todo por legibilidad y reutilización. Si una consulta tiene cuatro pasos lógicos, cuatro CTE con nombre se leen como un párrafo y quien la revise puede seguir el razonamiento, mientras que tres niveles de subconsultas anidadas obligan a empezar por el medio e ir hacia fuera. La otra razón real es referenciar el mismo conjunto intermedio dos veces sin repetirlo. Lo que no afirmaría es que las CTE son más rápidas. Ese mito está por todas partes. Según el motor y la versión, una CTE puede incorporarse al plan o materializarse una vez, y cualquiera de las dos puede ser la opción más rápida según cuántas veces se referencie y cómo de selectiva sea. En Postgres antes de la versión 12 las CTE eran una barrera de optimización, lo que a veces las hacía dramáticamente más lentas, así que reviso el plan cuando el rendimiento importa de verdad. Donde una CTE es insustituible es en la recursión: recorrer una jerarquía de responsables o un árbol de categorías es directo con una CTE recursiva y genuinamente incómodo sin ella.
¿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 funcionaPreguntas de seguimiento que puedes esperar
- ¿Qué es una CTE recursiva y para qué la usarías?
- ¿Cómo comprobarías si una CTE está perjudicando el plan de tu consulta?
- ¿Cuándo ganaría una tabla temporal a una CTE?
Más preguntas para Analista de datos
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